2012-03-28 6 views
1

Ich arbeite mit etwa 1 Million Datensätze Datensatz. Derzeit sind die Daten als "Text" -Typ formatiert und ich möchte, dass es ein "Zahl" -Typ ist.Excel: Massentext in eine Zahl umwandeln und feste Länge beibehalten?

Ich habe die Kopie Spezial> Multiplikation Technik verwendet, aber die Konvertierung wird führenden Nullen in den Datensatz fallen. Ich will das nicht, ich möchte die festen Längen der Daten inklusive führender Nullen beibehalten.

Wie mache ich das?

+0

kann leider nicht hier helfen, nur auf die Frage gestoßen, aber man sollte wohl hinzufügen, Excel oder die DB Sie auf die Tags für Ihre Frage verwenden, so dass mehr/die richtigen Leute es sehen. – TheSHEEEP

+0

Ihre Frage ist nicht klar. Möchten Sie, dass die Zahlen ** in Excel als "00125" anstelle von "125" angezeigt werden? Oder müssen Sie die Daten im Textformat mit der richtigen Anzahl von Zeichen exportieren? Wenn Sie "Datensatz" sagen, meinen Sie, dass die Daten in einer Datenbank gespeichert sind? usw. – assylias

+0

@assylias Daten werden in Excel gespeichert, und es bleibt dort, da ich Berechnungen darauf ausführen muss. Ich möchte nur die Daten vom Typ "Text" in den Typ "Nummer" ändern, ohne die Struktur zu verlieren. I.E. es ist als 00125 formatiert, aber wenn ich die Paste Spezial> Multiplikationstechnik verwende, bekomme ich 125. Ich möchte es als eine Zahl formatiert, aber behalten Sie die ursprüngliche Struktur, 00125. – toolshed

Antwort

0

Sie können VBA-Code wie den folgenden verwenden, aber Sie müssen immer noch die Logik einfügen, die die i-te Spalte mit der richtigen Länge formatiert.

Sub doIt() 

    Dim i As Long 

    Application.ScreenUpdating = False 
    For i = 1 To 10 'replace 10 by the index of the last column of your spreadsheet 
     With Columns(i) 
      .NumberFormat = String(.Cells(2, 1), "0") 'number length is in second row 
     End With 
    Next i 
    Application.ScreenUpdating = True 

End Sub 
+0

Könnte ich diese Referenz eine Schlüsselzeile haben? Wie überprüfe die 2. Reihe nach einer bestimmten Nummer? Die erste Spalte hat die Kopfzeilennamen. Die zweite (temporäre) Zeile hat die Länge des Feldes im Dezimalformat, d. H. 4 sollte 0000 sein. – toolshed

+0

Das ist, wonach wir gefragt haben. Siehe meine Bearbeitung. – assylias

+0

Eine letzte Frage dazu. Wäre es nicht Zellen (2, i) nicht Zellen (2,1)? Ich möchte nur sichergehen, bevor ich es ausführe, da es Zeit braucht, irgendwelche Makros auf dieser Datenmenge auszuführen. – toolshed

2

Eine Option ist das Zellenformat auf Custom gesetzt: Format -> Handy -> Benutzerdefiniert: Textbox "Typ": Die maximale Anzahl der Nullen

Beispiel: 00000 wird

Note 52 als 00.052 Anzeigen : Stellen Sie sicher, dass das Zellenformat auf alle Zellen angewendet wird, die an Ihrem Einfügen-Special beteiligt sind.

+0

Vielen Dank für die Antwort. Ich realisiere das, aber ich habe 1027 Zeilen, und alle Nummernlängen sind unterschiedlich. Ich kenne die spezifischen Längen für jede Reihe, ich weiß einfach nicht, wie ich alles automatisch und nicht manuell machen soll. – toolshed

+1

Welche Regel könnte verwendet werden, um eine Länge mit einer Zeile abzugleichen? –

+0

Entschuldigung, ich habe vielleicht falsch verstanden. Die Daten sind in Spalten organisiert. Jeder Spalte ist eine bestimmte Länge zugeordnet. Ich kenne diese Längenanforderungen, aber wie mache ich das für alle Zeilen auf einmal, anstatt jede Zeile einzeln zu formatieren? – toolshed