根据左列单元格合并相邻行单元格

Combine Adjacent Row Cells Depending on their Left Column Cell

我想根据左边相邻的单元格,将右边一列的单元格合并为一个单元格。我尝试了合并,但我只能做到这一点。在网上搜索后,我找不到任何可以解析每一行并结合左侧单元格跨度长度的东西。我知道这是一个 CONCATENATE 函数,但我如何让它解析整个电子表格?

这是我想要的上述结果的示例:

这可能太复杂了 - 在这种情况下我会回到绘图板并做一个完整的 VBA 版本,但最初我只是在寻找一个仅使用公式构建解决方案的挑战。不幸的是,似乎没有标准的 formula-based 方法来连接可变数量的单元格。

所以,为了完成这个,我添加了一个函数:

Function CombineRange(ByRef rng As Range, ByVal delim As String)
    Dim arr
    Dim i As Long

    arr = rng.Value

    CombineRange = ""
    For i = 1 To UBound(arr)
        If i > 1 Then
            CombineRange = CombineRange & delim
        End If

        CombineRange = CombineRange & arr(i, 1)
    Next i

End Function

假设:

  • 您的数据在一个名为 "YourData"
  • 的 sheet 中
  • 你的合并数据是A列
  • 你的"single row"数据是B列
  • 第 1 行是某种 header 行。

接下来,在一个新的sheet上设置四列(我称之为"Collapsed")

A - 起始行 =(第一行)数据从哪一行开始(在我们的例子中是 2)

A - 起始行 =(所有其他)A2+B2

B - 偏移量 = {IFERROR(MATCH(FALSE,ISBLANK(INDIRECT(ADDRESS(A2+1,1,,,"YourData")&":A200")),0),0)}

注意这是数组函数,输入时需要shift+Enter

C - Level1 = =INDEX(YourData!A:A,A2)

D - 综合等级 2 = =IF(B2<=1, INDIRECT(ADDRESS(A2,2,,,"YourData")), CombineRange(INDIRECT(ADDRESS(A2,2,,,"YourData")&":"&ADDRESS(A2+B2-1,2)),"; "))