Wie in Excel, MacLochlainns Weblog lpad
Sie können eine Kombination aus der REPLACE und REPT (es glauben oder nicht, das ist die Repeat-Funktion) verwenden. Der erste Schritt Pad nach links erfordert, dass Sie die Funktion REPLACE zu meistern. Es dauert vier aktuelle Parameter. Die erste ist die alte oder Basiszeichenfolge, die typischerweise eine Zellenreferenz ist. Die zweite ist die Startposition, die dritte die Länge der Basiszeichenfolge zu ersetzen ist, und die vierte die neue Zeichenfolge. Im folgende Beispiel wird vorausgesetzt, dass Sie die gesamte Zeichenfolge mit einem weißen Raum vor der ursprünglichen Zeichenfolge ersetzt werden sollen.
Wenn Sie nicht den Ampersand mögen mit verketten, können Sie es mit der Funktion VERKETTEN, wie diese ersetzen:
Während kompakte, hat der Ampersand den Trick und schließlich spart Platz für komplexe Mega-Formeln. Im nächsten Schritt müssen Sie lernen, wie die REPT-Funktion zu verwenden.
Die REPT-Funktion nimmt zwei Parameter, die die Zeichenfolge, die Sie und die Anzahl der Male wiederholen möchten Sie es wiederholen möchten. Unter der Annahme, dass Sie alle Strings erwarten, dass er kleiner als zwanzig, können Sie die REPT-Funktion auf diese Weise verwenden, um eine dynamische Polsterung der physischen weißen Raum zu schaffen.
Wenn Sie die Konzepte zusammen, dann würden Sie den folgenden Befehl erhalten, um dynamisch eine Zeichenfolge in Zelle A1 mit einer 20-Zeichenzelle zu ersetzen, die rechts ausgerichtet ist. Der neue Wert würde in der Zelle, wo Sie diese Formel setzen.
Auf diese Weise können Sie Pad eine Zeichenfolge links, die ich nehme groß ist, wenn Sie die Ausgabe einer flachen Position bestimmte Datei möchten. Ich würde eine CSV und eine robustere Programmierumgebung bevorzugen, aber ich hoffe, dass es diejenigen, die es tun wollen hilft.
Wie Andy wies darauf hin, können Sie es mit diesem vereinfachen:
Als Update auf die ursprüngliche Blog-Post, hier ist eine Visual Basic für Applikationen (VBA) User Defined Function (UDF), die Sie mit einer Add-in-Funktion zur Verfügung stellen würden, um diese Aufgabe auszuführen. Es ist zu LPAD Zahlen oder Text entworfen, und immer Text zurück. Sie können feststellen, wie Excel VBA UDF in dieser neueren Blog-Post von mir zu entwickeln und einzusetzen.
'Die Funktion nimmt jede Eingabe als eine Zelle und verwaltet Zahlen anders als Strings. Funktion LPAD (Zelle As Variant _. Optional Offset As Variant = 0 _. Optional padWith As String = "0") 'Rückgabevariable. Dim Return Returnstring As String Dim whitespace As String * 1 "Berichte einen sinnvollen Fehler, wenn ein nicht-numerische Offset-Parameter, der als Offset-Aufrufparameter vorgesehen ist. Wenn nicht IsNumeric (Offset) Then 'Dies bedeutet, dass die Funktion falsch aufgerufen wird, sondern unterdrückt ein #VALUE! Fehler. MsgBox ( „Offset kein nicht-numerischer Wert sein sollte [“ + Offset + „]“) "dynamisch zuweisen den Offset für das optionale Offset-Variable. ElseIf offset = 0 Then offset = Len (Zelle) Else 'Auf diese Weise können Sie den Offset-Wert, um zu sehen, wenn sie als Nummer versehen ist. 'MsgBox ( "Offset ist [" + CStr (Offset) + "]") End If' Standardwert zuweisen. whitespace = „“ 'Sicherstellen Größe mindestens die Länge der Zelle und Füllwert. Wenn IsNumeric (Offset) und Len (Zelle)> Offset Dann offset = Len (Zelle) + Len (padWith) End If 'default Füllwerts zuweisen, wenn die Zelle eine Zahl ist. Wenn IsNumeric (Zelle) Und IsNumeric (padWith) Dann padNumberWith = CInt (padWith) Else padNumberWith = 0 End If 'Convert to String wenn numerischen, Verwendung padWith Textwert, wenn nicht null und Leerzeichen, wenn null. Wenn IsNumeric (Zelle) Dann Return Returnstring = Application.Rept ( "0", Offset - Len (Application.Text (Zelle, padNumberWith))) + CStr (Zelle) ElseIf padWith <> "0" Dann Return Returnstring = Application.Rept (padWith, Offset - Len (Zelle)) + Zelle ElseIf padWith = "0" Dann Return Returnstring = Application.Rept (Leerzeichen, Offset - Len (Zelle)) + Zelle Else Return Returnstring = Anwendung. rept (““, Offset - Len (Zelle)) + Zelle End If 'formatierten String zurück. LPAD = Return Returnstring End Function
Die Formel für eine Zahl ist anders als es nativ in Excel wäre. Das ist, weil einige Verhaltensweisen implizit vorgesehen sind. Die äquivalente Funktion in Excel ist:
Microsoft Excel führt die LEN () Funktion implizit, wenn Sie es weglassen. Zum Beispiel funktioniert dies die gleiche wie die vollständigere Formel oben.
Alles, was gesagt wird, es ist nicht annähernd so kompliziert. Sie können die LPAD UDF in einer einfacheren Funktion zur Verfügung stellen, die nicht die integrierten in Arbeitsmappe Funktionen nicht verwendet. Alles, was Sie wissen müssen, ist, wie uns die Funktion String (), wie folgt aus:
Funktion LPAD (padding AS Variant, Zeichen als String, Zelle As String) 'definieren und einen Standardwert zuweisen, der ein Datentyp String sein muss. Dim character_default As String * 1 character_default = "" Dim NUMBER_DEFAULT As String * 1 NUMBER_DEFAULT = "0" "Überprüfen Sie, ob Sie ausreichende Werte haben, um fortzufahren. Wenn IsNumeric (padding) und IsNumeric (Zelle) Dann Wenn IsNumeric (Zeichen) Dann LPAD = String (padding, Zeichen) + Zelle Else LPAD = String (padding, NUMBER_DEFAULT) + Zelle If Else End If IsNumeric (Zeichen) Dann LPAD = String (Polsterung, Charakter) + Zelle Else LPAD = String (padding, character_default) + Zelle End If End If End Function
Sie würden diese UDF mit einem der folgenden Funktionsaufrufe rufen. Sie überspringen die letzten Parameter, weil seine optionalen Parameter.
User Defined Function Calls