2016-12-22 2 views
2

verschmelzenden I Informationen von zwei Spalten verwenden müssen Zahlen zu bauen, wie unten:Führende Nullen won't Paste, wenn Spalten VBA

-4 24296 -4.24296 -4 20320 -4.20320 -4 16356 -4.16356 -4 12410 -4.12410 -4 08500 -4.08500 -4 04619 -4.04619 -4 00739 -4.00739

Diese die Routine ich bin ist unter Verwendung der Werte zu fusionieren:

Range("R3").Select 

Do While ActiveCell <> "" 
    ActiveCell.Offset(0, 1).FormulaR1C1 = _ 
     ActiveCell.Offset(0, -1) & "." & ActiveCell.Offset(0, 0) 
    ActiveCell.Offset(1, 0).Select 
Loop 

das Problem ist, dass diese Routine die führenden Nullen sogar ignoriert, obwohl ich das Programm zeigt sie mit gemacht:

Worksheets("Data").Columns("R").NumberFormat = "00000" 

Dies ist die Ausgabe meines Programm mir geben:

-4 24296 -4.24296 -4 20320 -4.20320 -4 16356 -4.16356 -4 12410 -4.12410 -4 08500 -4.85000 -4 04619 -4.46190 -4 00739 -4.73900

(letzte drei Zeilen sind falsch)

Kann mir jemand helfen, dieses Problem lösen?

Danke,

+1

Build-Zahlen als Zahlen, nicht als Text. – Comintern

+0

Anzeige ist nicht dasselbe wie Wert. Wenn Sie das Format so ändern, dass führende Nullen angezeigt werden, haben Sie nichts an dem Wert in Spalte "R" vorgenommen. – xQbert

Antwort

5

Statt ActiveCell.Offset(0, -1) & "." & ActiveCell.Offset(0, 0) Verwendung dieses stattdessen:

ActiveCell.Offset(0, -1) - ActiveCell.Offset(0, 0)/100000 
+1

Das einzige Risiko, das ich hier sehen kann, ist, dass der Wert in Spalte R 5 Positionen überschreiten könnte. und dann wäre das falsch. Vielleicht ist es besser, die Länge der maximalen Spalte in R zu finden und 10^dieser maximalen Länge zu nehmen. Aber wenn alle bekannten Werte kleiner als 99999 sind, ist das sehr sauber. – xQbert

+0

@tigeravatar, Dies löst das führende Null-Problem, verursacht aber ein anderes Problem: Ich habe positive und negative Zahlen in Spalte Q. Muss eine IF-Routine zu summieren, wenn positiv in Spalte Q und subtrahieren wenn negativ in Spalte Q. –

+1

'ActiveCell.Offset (0, -1) + Sgn (ActiveCell.Offset (0, -1)) * ActiveCell.Offset (0, 0)/100000', um das Zeichenproblem zu lösen. –