[英]Excel - how to split a list in a cell into separate cells
您可以使用下面的代碼用chr(10)分割字符串,該字符串表示換行符。 請注意輸入數據標題和輸出列后面的假設。 另請注意,在這種情況下,詞典僅在VBA中以某種方式保持順序時才起作用-在其他編程語言中則不太可能。
Public Sub sub_test()
Dim wsThis As Worksheet: Set wsThis = ActiveSheet
Dim vData As Variant
Dim dicOutput As Object: Set dicOutput = CreateObject("scripting.dictionary")
Dim vTemp As Variant
Dim vLine As Variant
Dim i As Long
With wsThis
' Read data into memory - assume no header
vData = .Range(.Range("A1"), .Range("A1").End(xlDown))
' Loop through each row
For i = LBound(vData, 1) To UBound(vData, 1)
' Split by new line
vTemp = Split(vData(i, 1), Chr(10))
For Each vLine In vTemp
' Check if new line is empty string
If Trim(vLine) <> vbNullString Then
dicOutput(vLine) = 1
End If
Next vLine
Next i
vTemp = Application.Transpose(dicOutput.keys)
' Output into worksheet - assume column C
.Range("C1").Resize(UBound(vTemp, 1) - LBound(vTemp, 1) + 1, UBound(vTemp, 2) - LBound(vTemp, 2) + 1) = vTemp
End With
End Sub
這是在Excel 2016中不使用VBA的情況下執行此操作的方法:
=TEXTJOIN()
可以將所有值組合在一起,如下所示 =TEXTJOIN(CHAR(10,TRUE,$A$2:$A$5)
CHAR(10)
換行符之間的部分。 因此,在單元格B2
您可以編寫: =TRIM(MID(SUBSTITUTE(TEXTJOIN(Chr(10,TRUE,$A$2:$A$5),CHAR(10),REP(" ",99)),(ROW()-1)*99-98,99))
向下拖動公式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.