我有两个 Excel 单元格(A1 和 B1),每个单元格都包含逗号分隔的值,我想将这些值合并到一个单元格(C1)中,以便单元格 A1 中的第一个值通过逗号“链接”到单元格 B1 中的第一个值,所有值均如此例如:单元格 A1 包含以下内容:B21:01、B22:02、B23:01、B25:01 单元格 B1 包含以下内容:1578,2758,10599,5478 单元格 C1 应如下所示:B21:01,1578、B22:02,2758、B23:01,10599、B25:01,5478
我尝试过 =concatenate(transpose(A1:A4)&","),它对 1 列很有效(如果我将值转置到一列),但无法跨多列运行。有没有简单的方法可以做到这一点?
答案1
使用以下公式:
=TEXTJOIN(",",0,TRANSPOSE(TEXTSPLIT(A1&";"&B1,",",";")))
工作原理如下:
假设 A1 包含A,B,C,D,E
且 B1 包含10,20,30,40,50
:
答案2
您愿意使用 VBA 吗?如果愿意,此函数将执行您想要的操作:
Function pair(ByVal c1 As Range, ByVal c2 As Range, ByVal separator As String) As String
Dim arr1 As Variant, arr2 As Variant
arr1 = Split(c1.Value, separator)
arr2 = Split(c2.Value, separator)
For i = 0 To WorksheetFunction.Min(UBound(arr1), UBound(arr2))
pair = pair & arr1(i) & separator & arr2(i) & separator
Next i
pair = Left(pair, Len(pair) - Len(separator))
End Function
您可以在工作簿中像这样使用它(只需将分号替换为逗号。我的语言设置使用分号):
编辑:此函数将取两个单元格中较少的元素。因此,如果单元格 1 中有 4 个值,单元格 2 中有 3 个值,则它只会生成 3 对,并忽略单元格 1 中的第 4 个值。根据您是否希望这样做,您可能需要修改此函数。
编辑2:下面是从第二个单元格中的值中删除小数的版本:
Function pair(ByVal c1 As range, ByVal c2 As range, ByVal separator As String) As String
Dim arr1 As Variant, arr2 As Variant
arr1 = Split(c1.Value, separator)
arr2 = Split(c2.Value, separator)
For i = 0 To WorksheetFunction.Min(UBound(arr1), UBound(arr2))
pair = pair & arr1(i) & separator & Split(arr2(i), ".")(0) & separator
Next i
pair = Left(pair, Len(pair) - Len(separator))
End Function