我有两个单元格,每个单元格都有逗号分隔的值,我想将它们合并为一个单元格

我有两个单元格,每个单元格都有逗号分隔的值,我想将它们合并为一个单元格

我有两个 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

  1. A1 & ";" & B1将它们连接起来,并;在它们之间添加:A,B,C,D,E;10,20,30,40,50

  2. 文本分割((that), ",", ";") 将它们扩展为一个表格:

    A C
    10 20 三十 40 50
  3. 移调((that)) 转置该表:

    A 10
    20
    C 三十
    40
    50
  4. 文本连接( ",", 0,(that)) 逐行、逐单元格地浏览该表格并连接单元格的内容,并,在它们之间插入:A,10,B,20,C,30,D,40,E,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

相关内容