Z.B
A1:I
A2:am
A3:a
A4:boy
Ich möchte sie alle zu einer einzigen Zelle zusammenführen. "Iamaboy"
Dieses Beispiel zeigt, wie 4 Zellen zu einer Zelle zusammengeführt werden. Ich habe jedoch viele Zellen (mehr als 100). Ich kann sie nicht einzeln eingeben. A1 & A2 & A3 & A4
Was kann ich tun?
Antworten:
Ich präsentiere Ihnen meine ConcatenateRange VBA-Funktion (danke Jean für den Namensratschlag!). Es wird eine Reihe von Zellen (jede Dimension, jede Richtung usw.) verwendet und zu einer einzigen Zeichenfolge zusammengeführt. Als optionalen dritten Parameter können Sie einen Trennzeichen hinzufügen (z. B. ein Leerzeichen oder Kommas).
In diesem Fall würden Sie Folgendes schreiben, um es zu verwenden:
Function ConcatenateRange(ByVal cell_range As range, _ Optional ByVal separator As String) As String Dim newString As String Dim cell As Variant For Each cell in cell_range If Len(cell) <> 0 Then newString = newString & (separator & cell) End if Next If Len(newString) <> 0 Then newString = Right$(newString, (Len(newString) - Len(separator))) End If ConcatenateRange = newString End Function
quelle
ConcatenateRange
! Die dumme Excel-CONCATENATE
Funktion akzeptiert keinen Bereich als Eingabe, nur eine Liste einzelner Zellen als separate Argumente ...Else newString = newString & (separator & Space(1))
da ich die feste Breite in der resultierenden Zeichenfolge beibehalten muss.Wenn Sie dies lieber ohne VBA tun möchten, können Sie Folgendes versuchen:
Zelle B999 enthält jetzt die verkettete Textzeichenfolge, nach der Sie suchen.
quelle
Im Inneren können
CONCATENATE
Sie verwenden,TRANSPOSE
wenn Sie es erweitern ( F9) und dann die umgebenden{}
Klammern entfernen, wie dies empfohlen wirdWird
=CONCATENATE("Oh ","combining ", "a " ...)
Möglicherweise müssen Sie am Ende ein eigenes Trennzeichen hinzufügen, z. B. eine Spalte C erstellen und diese Spalte transponieren.
=B1&" " =B2&" " =B3&" "
quelle
In einfachen Fällen können Sie die nächste Methode verwenden, bei der Sie keine Funktion erstellen oder Code in mehrere Zellen kopieren müssen:
Schreiben Sie in eine beliebige Zelle den nächsten Code
Wobei A1: A9 Zellen sind, die Sie zusammenführen möchten.
F9
Danach enthält die Zelle die Zeichenfolge:
Quelle: http://www.get-digital-help.com/2011/02/09/concatenate-a-cell-range-without-vba-in-excel/
Update: Ein Teil kann mehrdeutig sein. Ohne die Zelle zu verlassen, müssen Sie Ihre Zelle im Editor-Modus haben. Alternativ können Sie F9 drücken, während Sie sich im Zelleneditor befinden (normalerweise befindet es sich über der Tabelle).
quelle
Verwenden Sie die bereits vorhandene
Join
Funktion von VBA . VBA-Funktionen werden in Excel nicht verfügbar gemacht, daher füge ichJoin
eine benutzerdefinierte Funktion hinzu, die ihre Funktionalität verfügbar macht. Die einfachste Form ist:Function JoinXL(arr As Variant, Optional delimiter As String = " ") 'arr must be a one-dimensional array. JoinXL = Join(arr, delimiter) End Function
Anwendungsbeispiel:
=JoinXL(TRANSPOSE(A1:A4)," ")
als Array-Formel eingegeben (mit Ctrl- Shift- Enter).
Akzeptiert jetzt
JoinXL
nur eindimensionale Arrays als Eingabe. In Excel geben Bereiche zweidimensionale Arrays zurück. Im obigen Beispiel wirdTRANSPOSE
das zweidimensionale 4 × 1-Array in ein eindimensionales 4-Element-Array konvertiert (dies ist das dokumentierte Verhalten,TRANSPOSE
wenn es mit einem einspaltigen zweidimensionalen Array gespeist wird).Für einen horizontalen Bereich müssten Sie ein Double ausführen
TRANSPOSE
:Das Innere
TRANSPOSE
wandelt das zweidimensionale 1 × 4-Array in ein zweidimensionales 4 × 1-Array um, das das ÄußereTRANSPOSE
dann in das erwartete eindimensionale 4-Element-Array umwandelt.Diese Verwendung von
TRANSPOSE
ist eine bekannte Methode zum Konvertieren von 2D-Arrays in 1D-Arrays in Excel, sieht aber schrecklich aus. Eine elegantere Lösung wäre, dies in derJoinXL
VBA-Funktion zu verbergen .quelle
Für diejenigen, die Excel 2016 haben (und ich nehme an, die nächsten Versionen), gibt es jetzt direkt die CONCAT- Funktion, die die CONCATENATE- Funktion ersetzen wird .
Der richtige Weg, dies in Excel 2016 zu tun, ist:
was produzieren wird:
Für Benutzer älterer Excel-Versionen sind die anderen Antworten relevant.
quelle
CONCAT
Für Excel 2011 auf Mac ist das anders. Ich habe es in drei Schritten gemacht.
=B1
. Für die nächste Zeile zu Zeile N lautet die Formel=Concatenate(",",A2)
. Am Ende haben Sie:=B1
. Für alle anderen Zeilen bis N lautet die Formel=Concatenate(C1,B2)
. Und du bekommst:Die letzte Zelle der Liste ist das, was Sie wollen. Dies ist kompatibel mit Excel unter Windows oder Mac.
quelle
=CONCATENATE(B1;",";A2)
. Dann müssen Sie den rechten Punkt in der Zelle für alle Zeilen nach unten ziehen und der letzte Wert wird das Ergebnis seinIch verwende die
CONCATENATE
Methode, um die Werte einer Spalte zu nehmen und sie mit dazwischen liegenden Spalten in Anführungszeichen zu setzen, um dieWHERE IN ()
Klausel einer SQL-Anweisung schnell zu füllen.Ich tippe immer nur
=CONCATENATE("'",B2,"'",",")
und wähle das aus und ziehe es nach unten, wodurch usw. erstellt=CONCATENATE("'",B3,"'",",")
wird=CONCATENATE("'",B4,"'",",")
. Markiere dann die gesamte Spalte, kopiere das Einfügen in einen Nur-Text-Editor und füge es bei Bedarf zurück, wodurch die Zeilentrennung entfernt wird. Es funktioniert, aber genau wie ein einmaliger Deal ist dies keine gute Lösung für jemanden, der dies ständig braucht.quelle
Ich weiß, dass dies wirklich eine sehr alte Frage ist, aber ich habe versucht, dasselbe zu tun, und bin auf eine neue Excel-Formel namens "TEXTJOIN" gestoßen.
Für die Frage löst die folgende Formel das Problem
=TEXTJOIN("",TRUE,(a1:a4))
Die Signatur von "TEXTJOIN" wird als TEXTJOIN erklärt (Trennzeichen, ignore_empty, text1, [text2], [text3], ...)
quelle