Frage Wie fasst man Zeilen in einer Spalte in Excel zusammen?


Z.B

A1:I
A2:am
A3:a
A4:boy 

Ich möchte sie alle zu einer einzigen Zelle "Iamaboy" zusammenführen
Dieses Beispiel zeigt, dass 4 Zellen in 1 Zelle zusammengeführt werden, aber ich habe viele Zellen (mehr als 100), ich kann sie nicht nacheinander eingeben A1 & A2 & A3 & A4 Was kann ich tun?


74
2017-11-15 11:57


Ursprung


Antworten:


Ich präsentiere Ihnen meine ConcatenateRange VBA-Funktion (Danke Jean für den Namensvorschlag!). Es wird eine Reihe von Zellen (jede Dimension, jede Richtung usw.) aufnehmen und sie zu einer einzigen Zeichenfolge zusammenführen. Als optionaler dritter Parameter können Sie einen Trenner (wie ein Leerzeichen oder ein Komma getrennt) hinzufügen.

In diesem Fall würden Sie dies schreiben, um es zu verwenden:

=ConcatenateRange(A1:A4)

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

82
2017-11-15 12:29



Wenn Sie dies ohne VBA bevorzugen, können Sie Folgendes versuchen:

  1. Habe deine Daten in Zellen A1: A999 (oder so)
  2. Setze Zelle B1 auf "= A1"
  3. Setze Zelle B2 auf "= B1 & A2"
  4. Kopieren Sie die Zelle B2 bis auf B999 (z. B. indem Sie B2 kopieren, Zellen B3: B99 auswählen und einfügen)

Die Zelle B999 enthält jetzt die verkettete Textzeichenfolge, nach der Sie suchen.


141
2017-11-15 17:01



Innerhalb CONCATENATE Sie können verwenden TRANSPOSE wenn Sie es erweitern (F9) dann entfernen Sie die Umgebung {}Klammern wie Dies empfiehlt

=CONCATENATE(TRANSPOSE(B2:B19))

Wird

=CONCATENATE("Oh ","combining ", "a " ...)

CONCATENATE(TRANSPOSE(B2:B19))

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&" "

33
2018-06-30 03:30



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:

  1. Schreiben Sie in einer beliebigen Zelle den nächsten Code

    =Transpose(A1:A9) 
    

Wo A1: A9 sind Zellen, die Sie zusammenführen möchten.

  1. Ohne die Zelle zu verlassen F9

Danach enthält die Zelle die Zeichenfolge:

={A1,A2,A3,A4,A5,A6,A7,A8,A9}

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, bedeutet das, dass deine Zelle im Editor-Modus ist. Alternativ können Sie F9 drücken, während Sie sich im Zelleneditorfenster befinden (normalerweise kann es oberhalb der Tabelle gefunden werden)


23
2017-08-05 10:59



Verwenden Sie VBA bereits vorhanden Join Funktion. VBA-Funktionen sind in Excel nicht verfügbar, also wickle ich Join in einer benutzerdefinierten Funktion, 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

Beispielverwendung:

=JoinXL(TRANSPOSE(A1:A4)," ") 

als Array-Formel eingegeben (mit Strg-Verschiebung-Eingeben).

enter image description here


Jetzt, JoinXL akzeptiert nur eindimensionale Arrays als Eingabe. In Excel geben Bereiche zweidimensionale Arrays zurück. Im obigen Beispiel TRANSPOSE wandelt das 4 × 1-zweidimensionale Array in ein 4-Elemente-eindimensionales Array um (dies ist das dokumentierte Verhalten von TRANSPOSE wenn es mit einer einspaltigen zweidimensionalen Anordnung gespeist wird).

Für einen horizontalen Bereich müssten Sie ein Double tun TRANSPOSE:

=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))

Das Innere TRANSPOSE wandelt die 1 × 4 zweidimensionale Anordnung in eine 4 × 1 zweidimensionale Anordnung um, die die äußere TRANSPOSE konvertiert dann in das erwartete eindimensionale Array mit vier Elementen.

enter image description here

Diese Verwendung von TRANSPOSE ist ein bekannter Weg, 2D-Arrays in 1D-Arrays in Excel umzuwandeln, aber es sieht schrecklich aus. Eine elegantere Lösung wäre es, dies in der JoinXLVBA-Funktion.


12
2017-10-20 10:40



Für diejenigen, die haben Excel 2016 (und ich vermute nächste Versionen), gibt es jetzt direkt die CONCAT Funktion, die die ersetzen wird VERKETTEN Funktion.

Der richtige Weg, dies in Excel 2016 zu tun, ist:

=CONCAT(A1:A4)

was wird produzieren:

Ich bin ein Junge

Für Benutzer älterer Versionen von Excel sind die anderen Antworten relevant.


4
2018-03-03 16:54



Für Excel 2011 auf Mac ist das anders. Ich habe es in drei Schritten gemacht.

  1. Erstellen Sie eine Spalte mit Werten in Spalte A.
  2. Erstellen Sie in Spalte B rechts neben der ersten Zelle eine Regel, die die Verkettungsfunktion für den Spaltenwert und "," verwendet. Angenommen, A1 ist die erste Zeile, lautet die Formel für B1 =B1. Für die nächste Zeile in Zeile N lautet die Formel =Concatenate(",",A2). Sie enden mit:
QA
, Sekuli
,Testen
, Applitools
, Sichtprüfung
, Testautomatisierung
,Selen
  1. In Spalte C erstellen Sie eine Formel, die alle vorherigen Werte verkettet. Weil es additiv ist, wirst du alles am Ende bekommen. Die Formel für Zelle C1 ist =B1. Für alle anderen Zeilen zu N lautet die Formel =Concatenate(C1,B2). Und du bekommst:
QS, Sekuli
QA, Sekuli, Testen
QA, Sekuli, Testen, Applitools
QA, Sekuli, Testen, Applitools, Visual Testing
QA, Sekuli, Testen, Applitools, Visual Testing, Testautomatisierung
QA, Sekuli, Prüfung, Applitools, Sichtprüfung, Testautomatisierung, Selenium

Die letzte Zelle der Liste wird sein, was Sie wollen. Dies ist mit Excel unter Windows oder Mac kompatibel.


2
2017-12-22 18:11



Ich verwende das CONCATENATE Methode, um die Werte einer Spalte zu übernehmen und um sie herum Spalten mit dazwischen liegenden Spalten einzufügen, um die Spalten schnell zu füllen WHERE IN () Klausel einer SQL-Anweisung.

Ich tippe immer nur =CONCATENATE("'",B2,"'",",") und dann wähle das aus und ziehe es nach unten, was erstellt =CONCATENATE("'",B3,"'",","), =CONCATENATE("'",B4,"'",",")usw. Markieren Sie dann die gesamte Spalte, kopieren Sie sie in einen Texteditor und fügen Sie sie bei Bedarf wieder ein, um die Zeilentrennung zu entfernen. Es funktioniert, aber wieder, nur als eine einmalige Abmachung, das ist keine gute Lösung für jemanden, der dies die ganze Zeit braucht.


1