Answers:
使用用户定义函数比逐个单元硬编码灵活得多
使用您的新公式,如D6单元格快照中的公式
=ConCat(A1:A5)
您可以使用更复杂的公式,例如D7
=ConCat(A1:A5,A7:A24)
或D8中的公式,即2D
=concat(A1:B5,A7:A24)
Function ConCat(ParamArray rng1()) As String
Dim X
Dim strOut As String
Dim strDelim As String
Dim rng As Range
Dim lngRow As Long
Dim lngCol As Long
Dim lngCnt As Long
strDelim = ", "
For lngCnt = LBound(rng1) To UBound(rng1)
If TypeOf rng1(lngCnt) Is Range Then
If rng1(lngCnt).Cells.Count > 1 Then
X = rng1(lngCnt).Value2
For lngRow = 1 To UBound(X, 1)
For lngCol = 1 To UBound(X, 2)
strOut = strOut & (strDelim & X(lngRow, lngCol))
Next
Next
Else
strOut = strOut & (strDelim & rng2.Value)
End If
End If
Next
ConCat = Right$(strOut, Len(strOut) - Len(strDelim))
End Function
如果它是一个looong值列,你可以使用CONCATENATE函数,但快速完成它有点棘手。假设细胞是A1:A10,在B9和B10中放置这些公式:
B9: = A9&“,”和B10
B10: = A10
现在,复制B9并将所有单元格粘贴到B列的顶部。
在B1中,您现在可以获得完整的结果。 复制>选择性粘贴>值。
惊人的答案,karthikeyan。我不想在VB中浪费时间,甚至不想从Ctrl + H中逃脱。这将是最简单的,我这样做。
最佳和简单的解决方案:
选择要复制到单列的列范围
复制单元格范围(多列)
打开Notepad ++
粘贴选定的单元格范围
按Ctrl + H,将\ t替换为\ n,然后单击全部替换
所有多列都属于一列
现在复制相同并粘贴在excel中
对于那些不想在VBA中浪费时间编码的人来说,这是一个简单而有效的解决方案
将列中的值列表组合到单个单元格中的最简单方法我发现使用简单的连接公式。1)插入新列2)使用要组合的列作为第一个值插入连接公式,将分隔符(空格,逗号等)作为第二个值,将放置公式的单元格下方的单元格作为第三个值值。3)将公式向下拖动到感兴趣的列中数据的末尾4)在新创建的列中复制并粘贴特殊值以删除公式,并且BOOM!...所有值现在都在顶部单元格中。
例如,下面的公式将组合单元格C3中A列中列出的所有值,并用分号分隔它们= CONCATENATE(A3,“;”,C4)