2011-02-02 16:01:08 +0000 2011-02-02 16:01:08 +0000
132
132

Eine Spalte in eine kommagetrennte Liste umwandeln

Ich habe die Aufgabe, ein einfaches Excel-Blatt zu erstellen, das eine unbestimmte Anzahl von Zeilen in Spalte A wie folgt nimmt:

1234
123461
123151
11321

Und sie in einer anderen Zelle in eine kommagetrennte Liste umwandeln, die der Benutzer leicht kopieren und in ein anderes Programm wie dieses einfügen kann:

1234,123461,123151,11321

Was ist der einfachste Weg, dies zu tun?

Antworten (14)

146
146
146
2011-02-02 16:37:59 +0000

Angenommen, Ihre Daten beginnen in A1, dann würde ich Folgendes in Spalte B einfügen:

B1:

=A1

B2:

Sie können dann Spalte B2 in der gesamten Spalte einfügen. Die letzte Zelle in Spalte B sollte nun eine durch Komma getrennte Liste der Spalte A sein.

76
76
76
2012-06-05 05:24:51 +0000
  • Kopieren Sie die Spalte in Excel
  • Öffnen Sie Word
  • “Spezielles einfügen” nur als Text
  • Markieren Sie die Daten in Word (die, die Sie in mit , getrennten Text konvertieren müssen), drücken Sie Strg-H (Suchen & Ersetzen)
  • Geben Sie in das Feld “Suchen nach” den Text ^p ein
  • Geben Sie in das Feld “Ersetzen durch” den Text , ein
  • Wählen Sie “Alle ersetzen”.
34
34
34
2017-01-25 18:05:00 +0000
23
23
23
2011-02-03 14:10:54 +0000

Eigentlich habe ich gerade ein Modul in VBA erstellt, das die ganze Arbeit erledigt. Es nimmt meine Bereichsliste und erzeugt eine durch Komma getrennte Zeichenfolge, die in die Zelle meiner Wahl ausgegeben wird:

Function csvRange(myRange As Range)
    Dim csvRangeOutput
    Dim entry as variant
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & entry.Value & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function

In meine Zelle füge ich dann einfach =csvRange(A:A) ein, und es gibt mir die durch Komma getrennte Liste.

10
10
10
2015-04-22 20:46:58 +0000

Ein alternativer Ansatz wäre, die Excel-Spalte in dieses In-Browser-Tool einzufügen: convert.town/column-to-comma-separated-list

Es konvertiert eine Textspalte in eine durch Kommata getrennte Liste.

Da der Benutzer ohnehin in ein anderes Programm kopiert und einfügt, kann dies für ihn genauso einfach sein.

7
7
7
2011-02-06 22:53:14 +0000

Verwenden Sie vi oder vim, um einfach ein Komma an das Ende jeder Zeile zu setzen:

%s/$/,/

Um diesen Befehl zu erklären:

  • % bedeutet, die Aktion (d.h. Suchen und Ersetzen) auf alle Zeilen anzuwenden
  • s zeigt die Ersetzung an
  • / trennt die Argumente (d.h., s/find/replace/options)
  • $ stellt das Ende einer Zeile dar
  • , ist in diesem Fall der Ersetzungstext
7
7
7
2011-02-02 19:12:57 +0000

Sie könnten so etwas tun. Wenn es sich nicht um eine riesige Tabellenkalkulation handelt, würde dies ‘ok’ funktionieren…

  • Alt-F11, Erstellen Sie ein Makro, um die Liste zu erstellen (siehe Code unten)
  • Weisen Sie es der Tastenkombination oder der Schaltfläche in der Symbolleiste zu
  • Der Benutzer fügt seine Zahlenkolonne in Spalte A ein, drückt die Schaltfläche, und seine Liste geht in Zelle B1.

Hier ist der VBA-Makrocode:

Sub generatecsv() 

Dim i As Integer
Dim s As String

i = 1

Do Until Cells(i, 1).Value = ""
    If (s = "") Then
        s = Cells(i, 1).Value
    Else
        s = s & "," & Cells(i, 1).Value
    End If
    i = i + 1 
Loop

Cells(1, 2).Value = s

End Sub

Achten Sie darauf, das Format von Zelle B1 auf ‘Text’ zu setzen, sonst erhalten Sie eine durcheinander geratene Zahl. Ich bin sicher, dass Sie dies auch in VBA tun können, aber ich bin mir im Moment nicht sicher, wie, und muss mich wieder an die Arbeit machen ;)

2
2
2
2011-04-08 15:54:06 +0000

muncherelli, Ihre Antwort hat mir gefallen, und ich habe daran gefeilt :). Nur eine Kleinigkeit, es gibt Zeiten, da ziehe ich Daten aus einem Blatt und benutze sie, um eine Datenbank abzufragen. Ich habe einen optionalen Parameter “textQualify” hinzugefügt, mit dessen Hilfe eine kommagetrennte Liste erstellt werden kann, die in einer Abfrage verwendet werden kann.

Function csvRange(myRange As Range, Optional textQualify As String)
    'e.g. csvRange(A:A) or csvRange(A1:A2,"'") etc in a cell to hold the string
    Dim csvRangeOutput
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & textQualify & entry.Value & textQualify & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function
2
2
2
2011-02-02 16:12:16 +0000

Sie könnten den Leitfaden des How-To Geek verwenden, um eine Zeile in eine Spalte zu verwandeln und diese einfach umzukehren. Dann exportieren Sie die Daten als csv (comma-deliminiertes Format), und schon haben Sie Ihre durch Komma getrennte Klartextliste! Sie können vom Notizblock kopieren und wieder in Excel einfügen, wenn Sie möchten. Wenn Sie nach dem Komma ein Leerzeichen wünschen, können Sie auch eine Such- und Ersetzungsfunktion verwenden, indem Sie “,” durch “, ” ersetzen - hoffentlich hilft das!

1
1
1
2014-10-06 22:56:30 +0000

Antwort von Sux2Lose ist meine bevorzugte Methode, aber sie funktioniert nicht, wenn Sie es mit mehr als ein paar tausend Zeilen zu tun haben, und kann für noch weniger Zeilen abbrechen, wenn Ihr Computer nicht viel verfügbaren Speicherplatz hat.

Die beste Vorgehensweise in diesem Fall ist wahrscheinlich, die Spalte zu kopieren, eine neue Arbeitsmappe zu erstellen, die in A1 der neuen Arbeitsmappe und in Transpose in der Vergangenheit als Spezial zu speichern, so dass die Spalte jetzt eine Zeile ist. Sichern Sie dann die Arbeitsmappe als .csv. Ihr csv ist jetzt im Grunde eine durch Kommata getrennte Liste im Klartext, die Sie in einem Texteditor öffnen können.

Hinweis: Denken Sie daran, die Spalte vor dem Speichern als csv in eine Zeile zu transponieren. Andernfalls weiß Excel nicht, dass Kommas zwischen die Werte geklebt werden müssen.

1
1
1
2011-09-28 17:23:52 +0000

Ich verbesserte das Unterprogramm generatecsv(), um mit einer Excel-Tabelle umgehen zu können, die mehrere Listen mit Leerzeilen enthält, die sowohl die Titel der einzelnen Listen als auch die Listen von ihren Titeln trennen. Beispiel

list title 1

item 1
item 2

list title 2

item 1
item 2

und kombiniert sie natürlich in mehreren Zeilen, 1 pro Liste.

Aus dem Grund, dass ich von einem Kunden mehrere Schlüsselwörter im Listenformat für seine Website basierend auf dem Thema erhalten hatte, brauchte ich eine Möglichkeit, diese Schlüsselwörter leicht in die Webseiten zu bekommen. Also habe ich die Routine modifiziert und mir folgendes einfallen lassen, außerdem habe ich die Variablennamen in aussagekräftige Namen geändert:

Sub generatecsv()

      Dim dataRow As Integer
      Dim listRow As Integer
      Dim data As String

      dataRow = 1: Rem the row that it is being read from column A otherwise known as 1 in vb script
      listRow = 1: Rem the row in column B that is getting written

      Do Until Cells(dataRow, 1).Value = "" And Cells(dataRow + 1, 1).Value = ""
        If (data = "") Then
          data = Cells(dataRow, 1).Value
        Else
          If Cells(dataRow, 1).Value <> "" Then
            data = data & "," & Cells(dataRow, 1).Value
          Else
            Cells(listRow, 2).Value = data
            data = ""
            listRow = listRow + 1
          End If
        End If
        dataRow = dataRow + 1
      Loop

      Cells(listRow, 2).Value = data

    End Sub
0
0
0
2019-11-29 07:33:32 +0000

Ich habe es so gemacht

Ich habe alle unerwünschten Spalten und Daten entfernt, dann als .csv-Datei gespeichert, dann die zusätzlichen Kommas und die neue Zeile mit dem Visual Studio Code-Editor ersetzt. Hola

-1
-1
-1
2016-11-02 12:45:34 +0000

Eine der einfachsten Möglichkeiten ist die Verwendung der Webanwendung zamazin.co für diese Art von Komma trennenden Aufgaben. Füllen Sie einfach die Spaltendaten aus und klicken Sie auf die Schaltfläche “Konvertieren”, um eine kommagetrennte Liste zu erstellen. Sie können sogar einige andere Einstellungen verwenden, um die gewünschte Ausgabe zu verbessern. http://zamazin.co/comma-separator-tool

-2
-2
-2
2011-02-02 16:32:57 +0000

Verwenden Sie =CONCATENATE(A1;",";A2;",";A3;",";A4;",";A5) auf der Zelle, die das Ergebnis anzeigen soll.