excel - 根据左列单元格组合相邻行单元格

标签 excel parsing concatenation spreadsheet vba

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

Adjacent Cells

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

enter image description here

最佳答案

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

因此,为了实现这一点,我添加了一个功能:

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”
  • 的工作表中
  • 您的合并数据是 A 列
  • 您的“单行”数据是 B 列
  • 第 1 行是某种标题行。

  • your data

    接下来,在新工作表上设置四列(我称之为“折叠”)

    A - 开始行 =(第一行)您的数据开始的任何行(在我们的例子中为 2)

    A - 起始行 =(所有其他)A2+B2
    B - 偏移量 = {IFERROR(MATCH(FALSE,ISBLANK(INDIRECT(ADDRESS(A2+1,1,,,"YourData")&":A200")),0),0)}
    注意这是一个数组函数,所以输入的时候需要shift+Enter

    C - 级别 1 = =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)),"; "))
    enter image description here

    关于excel - 根据左列单元格组合相邻行单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36403264/

    相关文章:

    c# - 如何检查字符串是否为正整数?

    excel - 机器人框架和 Excel : Constructing full path to Excel-file of different parts of the path (Open Pyxl Library)

    bash - 在 bash 中逐列混合多个文件

    C:如何将 'x' 空格附加/连接到字符串

    python - 在 python 中使用 pandas 将数据写入现有 Excel

    Javascript以某种方式解析函数的字符串参数?

    c++ - Bison 将 C 函数指针作为函数调用?

    vba - 无法以编程方式刷新 VBA 代码

    vba - label.caption 未更新

    excel - 查找一个范围,其中包含在第二个范围内也以相同顺序存在的值