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

Zet een kolom om in een door komma's gescheiden lijst

Ik heb de taak om een eenvoudig Excel-blad te maken dat een onbepaald aantal rijen in kolom A neemt zoals dit:

1234
123461
123151
11321

En maak ze tot een door komma’s gescheiden lijst in een andere cel die de gebruiker gemakkelijk kan kopiëren en plakken in een ander programma zoals:

1234,123461,123151,11321

Wat is de gemakkelijkste manier om dit te doen?

Antwoorden (14)

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

Ervan uitgaande dat uw gegevens in A1 beginnen zou ik in kolom B:

B1:

=A1

B2:

=B1&","&A2

U kunt dan kolom B2 in de hele kolom plakken. De laatste cel in kolom B zou nu een door komma’s gescheiden lijst van kolom A moeten zijn.

76
76
76
2012-06-05 05:24:51 +0000
  • Kopieer de kolom in Excel
  • Open Word
  • “Paste special” als tekst alleen
  • Selecteer de gegevens in Word (degene die u moet omzetten naar tekst gescheiden door ,), druk op Ctrl-H (Find & replace)
  • In “Find what” box type ^p
  • In “Replace with” box type ,
  • Selecteer “Replace all”.
34
34
34
2017-01-25 18:05:00 +0000
23
23
23
2011-02-03 14:10:54 +0000

Ik heb eigenlijk net een module in VBA gemaakt die al het werk doet. Het neemt mijn bereik lijst en maakt een komma-beperkte string die wordt uitgevoerd in de cel van mijn keuze:

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

Dus dan in mijn cel, zet ik gewoon =csvRange(A:A) en het geeft me de komma-beperkte lijst.

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

Een alternatieve aanpak zou zijn om de Excel-kolom in deze in-browser te plakken: convert.town/column-to-comma-separated-list

Het converteert een kolom tekst naar een door komma’s gescheiden lijst.

Aangezien de gebruiker toch al aan het kopiëren en plakken is naar een ander programma, kan dit voor hem of haar net zo gemakkelijk zijn.

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

Gebruik vi, of vim om eenvoudigweg een komma te plaatsen aan het einde van elke regel:

%s/$/,/

Om deze opdracht uit te leggen:

  • % betekent de actie (d.w.z., vinden en vervangen) op alle regels
  • s geeft substitutie aan
  • / scheidt de argumenten (d.w.z. s/find/replace/options)
  • $ staat voor het einde van een regel
  • , is de vervangende tekst in dit geval
7
7
7
2011-02-02 19:12:57 +0000

Je zou zoiets kunnen doen. Als je het niet over een enorme spreadsheet hebt zou dit ‘ok’ uitvoeren…

  • Alt-F11, Maak een macro om de lijst aan te maken (zie onderstaande code)
  • Wijs het toe aan een snelkoppeling of werkbalkknop
  • Gebruiker plakt zijn kolom met nummers in kolom A, drukt op de knop, en zijn lijst gaat naar cel B1.

Hier is de VBA-macrocode:

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

Stel het formaat van cel B1 in op ‘tekst’ of je krijgt een verknoeid nummer. Ik weet zeker dat je dit ook in VBA kunt doen, maar ik weet niet hoe op dit moment, en moet weer aan het werk. ;)

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

muncherelli, ik vond je antwoord leuk, en ik heb het aangepast :). Een kleinigheidje, er zijn momenten dat ik gegevens uit een blad haal en het gebruik om een database te bevragen. Ik heb een optionele “textQualify” parameter toegevoegd die helpt bij het maken van een komma gescheiden lijst die bruikbaar is in een query.

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

Je zou How-To Geek’s gids kunnen gebruiken om een rij in een kolom te veranderen en deze eenvoudigweg om te keren. Exporteer dan de gegevens als een csv (komma-geëlimineerd formaat), en je hebt je lijst met platte-tekst-komma-gescheidenen! U kunt kopiëren van kladblok en het terugzetten in Excel als u dat wilt. Ook, als u een spatie na de komma wilt, kunt u een zoek- en vervangingsfunctie doen, waarbij u “,” vervangt door “,”. Hoop dat dat helpt!

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

Sux2Lose’s antwoord ](https://superuser.com/a/240880/90963) is mijn voorkeursmethode, maar het werkt niet als je te maken hebt met meer dan een paar duizend rijen, en kan breken voor nog minder rijen als je computer niet veel beschikbaar geheugen heeft.

Best practice in dit geval is waarschijnlijk het kopiëren van de kolom, het maken van een nieuw werkboek, het verleden speciaal in A1 van het nieuwe werkboek en Transpose, zodat de kolom nu een rij is. Sla het werkboek dan op als .csv. Je csv is nu in principe een lijst die je kunt openen in een tekstverwerker.

Aanwijzing: Vergeet niet de kolom om te zetten in een rij voordat je hem opslaat als csv. Anders weet Excel niet dat er komma’s tussen de waarden moeten worden geplakt.

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

Ik heb de generatecsv() sub verbeterd om te kunnen omgaan met een excel sheet die meerdere lijsten bevat met lege regels die zowel de titels van elke lijst als de lijsten van hun titels scheiden. voorbeeld

list title 1

item 1
item 2

list title 2

item 1
item 2

en combineert ze natuurlijk in meerdere rijen, 1 per lijst.

reden, ik had een klant me meerdere trefwoorden in lijstformaat laten sturen voor hun website op basis van het onderwerp, had een manier nodig om deze trefwoorden gemakkelijk in de webpagina’s te krijgen. Dus wijzigde ik de routine en kwam met het volgende, ook wijzigde ik de variabele namen in betekenisvolle namen:

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

Ik deed het op deze manier

Verwijderde alle ongewenste kolommen en gegevens, vervolgens opgeslagen als .csv-bestand, en verving vervolgens de extra komma’s en nieuwe regel met behulp van Visual Studio Code editor. Hola

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

Een van de gemakkelijkste manieren is om zamazin.co web app te gebruiken voor dit soort komma scheidende taken. Vul gewoon de kolomgegevens in en druk op de conversieknop om een lijst met komma’s te maken. U kunt zelfs enkele andere instellingen gebruiken om de gewenste uitvoer te verbeteren. http://zamazin.co/comma-separator-tool

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

Gebruik =CONCATENATE(A1;",";A2;",";A3;",";A4;",";A5) op de cel die u wilt weergeven.