題 將列轉換為逗號分隔列表


我的任務是創建一個簡單的Excel工作表,在A列中採用未指定數量的行,如下所示:

1234
123461
123151
11321

並將它們放入另一個單元格中的逗號分隔列表中,用戶可以輕鬆地將其複制並粘貼到另一個程序中,如下所示:

1234,123461,123151,11321

最簡單的方法是什麼?


108
2018-02-02 16:01


起源


部分解決方案可能是Edit,Paste Special,Transpose將列轉換為行。如果其他程序接受選項卡而不是逗號,那麼在復制新行之後,您將全部設置。 - Arjan
你怎麼做到這一點?以逗號分隔列表並將其轉換為內容列? - stevvve
@stevvve在數據選項卡中使用“文本到列”功能。 support.microsoft.com/en-us/kb/214261 - Trevor
我使用任何具有正則表達式的文本編輯器,如notepad ++。複製列值並將其粘貼到編輯器中,搜索並替換正則表達式,找到“\ r \ n”替換為“,”。如果要將CSV轉換為列,請找到“,”並替換為“\ r \ n” - junaling


答案:


假設您的數據在A1中開始,我會將以下內容放在B列中:

B1:

=A1

B2:

=B1&","&A2

然後,您可以將列B2粘貼到整個列中。列B中的最後一個單元格現在應該是列A的逗號分隔列表。


132
2018-02-02 16:37



這對於有限數量的行很有用,但是(取決於可用內存?)如果你連接超過幾千行,那麼這個過程將會縮短,使你的輸出值不完整。小心。 - samthebrand


  • 複製Excel中的列
  • 打開Word
  • “粘貼特殊”僅作為文本
  • 在Word中選擇數據(您需要將數據轉換為以。分隔的文本) ,) 按 按Ctrl - H (查找和替換)
  • 在“查找內容”框中鍵入 ^p
  • 在“替換為”框中鍵入 ,
  • 選擇“全部替換”

64
2018-06-05 05:24



這非常出色。謝謝! - Michael
+1與Microsoft的“官方”解決方案相同: support.microsoft.com/kb/819964 - Neo
非常可愛的解決方案...... :-) - Saravanan


我實際上只是在VBA中創建了一個完成所有工作的模塊。它需要我的遠程列表並創建一個逗號分隔的字符串,該字符串輸出到我選擇的單元格中:

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

那麼在我的手機中,我就是這麼說的 =csvRange(A:A) 它給了我逗號分隔的列表。


21
2018-02-03 14:10



啊..非常接近我的回答,但我喜歡你的實施。 - mpeterson


如果您有Office 365 Excel,則可以使用TEXTJOIN():

=TEXTJOIN(",",TRUE,A:A)

enter image description here


16
2018-01-25 18:05



完善!簡單!謝謝。 - Amy Patterson


另一種方法是將Excel列粘貼到此瀏覽器中的工具中:

convert.town/column-to-comma-separated-list

它將一列文本轉換為逗號分隔列表。

當用戶正在復制並粘貼到另一個程序時,這可能對他們來說同樣容易。


10
2018-04-22 20:46





你可以這樣做。如果你不是在談論一個巨大的電子表格,這將表現'好'......

  • Alt-F11,創建一個宏來創建列表(參見下面的代碼)
  • 將其分配給快捷方式或工具欄按鈕
  • 用戶將他們的數字列粘貼到A列,按下按鈕,他們的列表進入單元格B1。

這是VBA宏代碼:

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

確保將單元格B1的格式設置為“文本”,否則您將得到一個混亂的數字。我相信你也可以在VBA中做到這一點,但我不知道目前是怎樣的,需要重新開始工作。 ;)


7
2018-02-02 19:12





使用vi或vim只需在每行的末尾放置一個逗號:

%s/$/,/

要解釋此命令:

  • % 表示對所有行執行操作(即查找和替換)
  • s 表示替代
  • / 分離論點(即, s/find/replace/options
  • $ 代表一條線的終點
  • , 是這種情況下的替換文本

6
2018-02-06 22:53



同意。差遠了。 - muncherelli
因上下文而不同意評論。有超級用戶帳戶的人在這裡發帖通常是使用vim的類型。 - uniquegeek
我使用ViM並認為基本思想很有用。我最終通過使用這個想法和一個簡單的文本編輯器來解決問題。 - Nigini