2016-06-27 6 views
0

Ich versuche eine Formel zu erstellen, die die in Spalte A aufgelisteten Kontocodes berücksichtigt und eine durch "^" getrennte Zeichenfolge erstellt.xcel - systemeigener Code, um Textstrings unbekannter Länge zu erstellen

ZB Wenn Spalte A

A 

1111 

12345 

2222 

Das Ergebnis hat, wird sein: 1111^12345^2222 als ein Eintrag der einzelnen Zelle

Allerdings habe ich nicht immer im Voraus wissen, wie viele Werte in Spalte sein wird A. Und wenn es nur ein paar sind, kann ich nicht die nacheilenden ^^^^^^^^ haben. Außerdem sind die Kontocodes nicht immer die gleiche Anzahl von Ziffern.

Ich habe eine grobe Version davon mit einer Tonne von eingebetteten If-Anweisungen, aber das ist klobig. Ich könnte es wahrscheinlich auch über Makro machen, aber ich versuche es zu vermeiden. Gibt es eine minimalistische Möglichkeit, dies mit nativen Excel-Funktionen zu programmieren, oder sollte ich einfach akzeptieren, dass ich eine Makro-fähige Arbeitsmappe senden muss?

+1

Warum können Sie nicht verwenden 'Concatenate' gerade? – Brian

+0

Wenn ich etwas verwende wie: = CONCATENATE (A2, "^", A3, "^", A4, "^", A5, "^", A6) Es wird mir geben: 1111 ^^^^ if Ich habe nur einen Kontocode eingegeben. Ich könnte dann eingebettete IFs verwenden, aber das wird klobig. Ich versuche es zu erreichen, wo irgendwo zwischen 10 und 50 Kontencodes eingegeben werden können, als Folgewerte in vertikalen Zellen in Spalte A. Und egal wie viele Werte eingegeben werden, das Ergebnis bringt die Karate dazwischen. –

+0

Ich denke, ich habe es mit einer Hilfesäule gelöst. In Spalte B habe ich eine Formel hinzugefügt, die für B1 genau der Wert in A1 ist. Aber dann in B2, und gezogen wird ist: = CONCATENATE (B1, "^", A2) Und ich kann nur diesen Wert von welcher Zeile hat die zuletzt eingegebene Kontonummer ziehen. –

Antwort

0

Hier ist eine VBA Lösung, wenn Sie interessiert sind:

Function Concat(rng As Range) As String 

Dim i As Long 
Dim iCount As Long 

iCount = rng.Cells.Count 

For i = 1 To iCount 
    If Not i = iCount Then 
     Concat = Concat & Cells(i, rng.Column) & "^" 
    Else 
     Concat = Concat & Cells(i, rng.Column) 
    End If 
Next i 

i = 0 
iCount = 0 

End Function 
Verwandte Themen