it-swarm.com.de

Stapelfolgenverkettung in Excel

Ich habe ein paar hundert Zellen in Excel, die ich zu einer einzigen Zeichenfolge zusammenfassen möchte. Gibt es eine einfachere Methode, dies zu tun, als sie manuell nacheinander durchzugehen, um sie in CONCATENATE(A1, A2, ....) einzugeben?

CONCATENATE(A1:A255) funktioniert nicht.

29
Green Demon

* Geben Sie in einem neuen Tab A1 in Zelle A1 ein.

* Geben Sie A2 in Zelle A2 ein

* Verwenden Sie Füllreihe, um die Werte in Spalte A zu ergänzen

* Geben Sie A1 in Zelle B1 ein

  • Verwenden Sie dieses Forum in Zelle B2

    = B1 & "," & A2

  • Kopieren Sie die Formel herunter.

Kopieren Sie die Werte und fügen Sie sie ein, um die von Ihnen erstellte Zeichenfolge zu sammeln.

A1  A1
A2  A1,A2
A3  A1,A2,A3
A4  A1,A2,A3,A4
A5  A1,A2,A3,A4,A5
A6  A1,A2,A3,A4,A5,A6
A7  A1,A2,A3,A4,A5,A6,A7
A8  A1,A2,A3,A4,A5,A6,A7,A8
A9  A1,A2,A3,A4,A5,A6,A7,A8,A9
A10 A1,A2,A3,A4,A5,A6,A7,A8,A9,A10
34
James Jenkins

Drücken Sie Alt-F11, fügen Sie ein neues Modul ein und fügen Sie den folgenden Code ein.

Public Function concatRange(data As Range, Optional sep As String = "") As String
    Dim ret As String
    Dim sep2 As String
    ret = ""
    sep2 = ""

    For Each cell In data
        ret = ret & sep2 & cell.Value
        sep2 = sep
    Next cell

    concatRange = ret
End Function

Verwendungszweck:

=concatRange(A8:D11;", ")    'OS with ; list separator
=concatRange(A8:D11,", ")    'OS with , list separator or in a macro code

oder

=concatRange(A8:D11)
13
dedek

Diesen Blogeintrag finden Sie hier: http://www.dullsharpness.com/2011/11/14/Excel-vba-range-to-csv-range2csv-function/

Sie können es wie folgt verwenden, z. mit einem Pipe-Trennzeichen:

=Range2Csv(A1:A255,"|")

Greifen Sie mit Alt+F11 auf Ihren VBA-Editor zu und legen Sie ihn in einem Modul ab.

Code-Auszug ist hier:

Option Explicit
'**********************************************
'* PURPOSE: Concatenates range contents into a
'*          delimited text string
'*
'* FUNCTION SIGNATURE: Range2Csv(Range, String)
'*
'* PARAMETERS:
'*    Range  - the range of cells whose contents
'*             will be included in the CSV result
'*    String - delimiter used to separate values
'*             (Optional, defaults to a comma)
'*
'* AUTHOR: www.dullsharpness.com
'*
'* NOTES: [add'l notes removed for brevity]
'*
'**********************************************
Public Function Range2Csv(inputRange As Range, Optional delimiter As String)
  Dim concattedList As String 'holder for the concatted CSVs
  Dim rangeCell As Range      'holder cell used in For-Each loop
  Dim rangeText As String     'holder for rangeCell's text

  'default to a comma delimiter if none is provided
  If delimiter = "" Then delimiter = ","

  concattedList = ""          'start with an empty string

  'Loop through each cell in the range to append valid contents
  For Each rangeCell In inputRange.Cells

    rangeText = rangeCell.Value 'capture the working value

    'Only operate on non-blank cells (i.e. Length > 0)
    If Len(rangeText) > 0 Then
      'Strip any delimiters contained w/in the value itself
      rangeText = WorksheetFunction.Substitute(rangeText, delimiter, "")

      If (Len(concattedList) > 0) Then
        'prepend a delimiter to the new value if we
        'already have some list items
        concattedList = concattedList + delimiter + rangeText
      Else
        'else if the list is blank so far,
        'just set the first value
        concattedList = rangeText
      End If
    End If

  Next rangeCell

  'Set the return value
  Range2Csv = concattedList

End Function
8
Marc

verketten (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a12, a13, a14, a15, a16, a17, a18, a19, a20, a20, a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a30, a32, a32, a33, a35, a36, a37, a38, a39, a40, a41, a42, a43, a44, a44, a45, a46, a47, a47, a48, a49, a50, a51, a52, a53, a54, a55, a56, a57, a58, a59, a60, a62, a63, a64, a65, a66, a67, a68, a68, a69, a70, a71, a72, a72, a73, a74, a75, a76, a77, a78, a79, a80, a81, a82, a83, a84, a85, a86, a87, a88, a89, a90, a91, a92, a92, a94, a95, a95, a96, a97, a98, a99, a100, a101, a102, a103, a104, a105, a106, a107, a108, a109, a111, a112, a113, a114, a115, a116, a117, a118, a118, a111, a121, a121, a122, a122, a122, a125, a126, a127, a128, a128, a129, a130, a131, a132, a133, a135, a135, a137, a138, a139, a150, a151, a152, a153, a154, a155, a156, a157, a158, a156, a161, a162, a163, a164, a165, a166, a166, a168, a169, a161, a161, a161, a171, a171, a172, a172 a175, a176, a177, a178, a179, a180, a181, a182, a183 a184, a185, a186, a187, a188, a189, a190, a191, a192, a194, a195, a196, a198, a198, a198, a199, a200, a201, a202, a202, a203, a204, a205, a205, a205, a205, a207 a209, a210, a211, a212, a213, a214, a215, a216, a217, a219, a219, a220, a221, a222, a223, a224, a225, a226, a227, a229, a229, a230, a230, a230, a230, a230, a230, a230, a230, a230, a222, a222, a224, a224, a226, a226, a227, a229, a230, a230, a230, a230, a230, a230, a230, a230, a230, a221, a222, a222, a223, a226, a226, a227, a229, a230, a230, a223 a234, a235, a236, a237, a238, a239, a240, a241, a242, a243, a244, a245, a247, a248, a248, a249, a250, a251, a252, a254, a255)

PowerShell es!

"concatenate(a$((1..255) -join ', a'))" | clip

Öffnen Sie die Textdatei Kopieren und Einfügen

"Um Zellen schnell auszuwählen, drücken Sie die STRG-Taste und klicken Sie auf die Zellen, die in die Verkettungsfunktion einbezogen werden sollen. __ Beispiel: Wählen Sie eine Zelle aus Typ = Verketten (in der Formelleiste Drücken Sie Halten Sie die STRG-Taste gedrückt und klicken Sie auf die einzufügenden Zellen Lassen Sie die STRG-Taste los Geben Sie in die Bearbeitungsleiste ein und drücken Sie die Eingabetaste "

7
E.V.I.L.

Diese VBA-Funktion verkettet den Inhalt der Zellen bei Bedarf mit einem optionalen Trennzeichen. Kopieren Sie es in ein Standardmodul:

  Option Explicit

  Function Concat(CellRange As Range, Optional Delimiter As String) As String 
 ' this function will concatenate a range of cells and return the result as a single string
 ' useful when you have a large range of cells that you need to concatenate
 ' source: http://chandoo.org/wp/2008/05/28/how-to-add-a-range-of-cells-in-Excel-concat/

  Dim retVal As String, dlm As String, cell As Range
  retVal = ""
  If Delimiter = Null Then
      dlm = ""
  Else
    dlm = Delimiter
  End If
  For Each cell In CellRange
      If CStr(cell.Value) <> "" And CStr(cell.Value) <> " " Then
          retVal = retVal & CStr(cell.Value) & dlm
      End If
  Next
  If dlm <> "" Then
      retVal = Left(retVal, Len(retVal) - Len(dlm))
  End If
  Concat = retVal
End Function
3
chuff

Meine bevorzugte Methode ist das Ausschneiden und Einfügen der Werte in einen Editor, der reguläre Ausdrücke zulässt. Dann entferne ich einfach die Tabs (oder Leerzeichen) durch Suchen und Ersetzen in meiner aktuellen Auswahl. 

Sie können dies auch verwenden, um Kommas, Leerzeichen oder was immer Sie möchten, einzufügen. 

Es ist ein ton schneller als das Eingeben von =concatenate(A1,",","A2",",",......)

2
kmort

Wenn Sie nach einem reinen Excel-Ansatz (dh ohne VBA) suchen, ist die von James Jenkins vorgeschlagene Methode die beste Methode. Wenn Sie mit VBA zufrieden sind, öffnen Sie den VBA-Editor, fügen Sie ein neues Modul hinzu und fügen Sie folgenden Code hinzu:

Option Explicit

Public Function JoinText(cells As Variant,Optional delim_str As String) As String
    If cells.Columns.count < cells.Rows.count Then
       JoinText = Join(WorksheetFunction.Transpose(cells), delim_str)
    Else
       JoinText = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(cells)), delim_str)
    End If
End Function

Um den VBA-Editor einfach zu öffnen, drücken Sie die Tastenkombination Alt-F11 .. Um ein Modul einzufügen, klicken Sie mit der rechten Maustaste auf die Arbeitsmappe, die im Fenster "Projekt" aufgeführt ist.

Die Funktion wird wie folgt aus Excel aufgerufen:

=JoinText(A1:C1)

Wenn Sie ein Trennzeichen hinzufügen möchten (zB Komma):

=JoinText(A1:C1,",")

Der Zweck der Verwendung der Transponierungsfunktion besteht darin, aus dem 2d-Array "Zellen" ein 1d-Array zu machen. Die Resonanz dafür ist, dass die VBA-Funktion Join nur ein 1d-Array akzeptiert .. Der Grund für die Verwendung von zwei ist, dass JoinText eine Reihe von Zellen betrachtet (die immer noch nur ein 2d-Array ist) und dann der erste Aufruf an transponieren, transponiert dieses 2d-Zeilenarray in ein 2d-Spaltenarray. Der zweite Aufruf verwandelt ihn in ein 1d-Array.

2
user425678

Es ist kein reines Excel, aber es gibt eine einfache Möglichkeit, dies mit Word zu tun.

  1. Wählen Sie die Zellen aus, die Sie verketten möchten, und kopieren Sie sie in Word. Dadurch wird eine Tabelle erstellt.
  2. Wählen Sie die gesamte Tabelle aus.
  3. Wandeln Sie die Tabelle in Text um. Verwenden Sie Absatzzeichen (oder etwas anderes, das nicht in Ihrem Text erscheint) als Trennzeichen.
  4. Markieren Sie den gesamten Text.
  5. Verwenden Sie Ersetzen, um die Absatzmarken zu entfernen. (Geben Sie im Feld "Suchen nach" ^ p ein. Lassen Sie das Feld "Ersetzen durch" leer.)
1
Ronald Bourret

Wenn Sie über Excel 2016 verfügen, können Sie eine Matrixformel verwenden:

Eingeben 

= concat (a1: a255)

in die Zelle drücken und dann drücken

[Strg] + [Shift] + [Enter]

1
user6654769

Schamlos kopiert von dieser Seite :

  1. Wählen Sie die Zelle aus, in der Sie das Ergebnis benötigen.
  2. Gehen Sie zur Bearbeitungsleiste und geben Sie ein ... "= A1: A5"
  3. Wählen Sie die gesamte Formel aus und drücken Sie F9 (dadurch wird die Formel in Werte umgewandelt).
  4. Entfernen Sie die geschweiften Klammern von beiden Enden.
  5. Fügen Sie = CONCATENATE hinzu (am Anfang des Textes und beenden Sie ihn mit einer runden Klammer).
  6. Drücken Sie Enter.

Besonders aufschlussreich ist hier, dass bei der Bearbeitung einer Formel durch Drücken von F9 die Formel durch das Ergebnis dieser Formel ersetzt wird. Wo dies ein Bereich ist, wird er durch eine Liste der Inhalte dieses Bereichs ersetzt.

0
Steve Melnikoff

die Werte, die Sie verketten möchten, beginnen in Zeile 2, Spalte 3 Ihres Arbeitsblatts

Sub GOWN()
roww = 2
Do While cells(roww, 2) <> ""
    aa = cells(roww, 3)
    dd = dd & aa & ","
    roww = roww + 1
Loop
cells(roww + 1, 3) = dd
End Sub
0
Fraser Porter

Fügen Sie einfach Ihren Deliminator in einer Verkettung hinzu:

=concatenate(A1, ",")

Kopieren Sie dann alle Verkettungen und fügen Sie sie als Werte ein. Kopieren Sie dann diese Werte und fügen Sie sie in eine Transposition ein. Kopieren Sie dann die transponierten Werte und fügen Sie sie in einen Word-Editor ein. Suchen Sie nach dem Deliminator UND dem Leerzeichen vor den Werten und ersetzen Sie den Deliminator durch NUST. Dies sollte Ihnen eine verkettete Zeichenfolge aller Werte mit einem Deliminator geben. Dies ist viel einfacher als bei anderen Optionen.

0
John Lehrkind