Excel |获取所有 column/row 个包含特定文本的名称作为列表

Excel | Get all column/row names in which a specific text is as a list

我很难描述标题中的问题,请原谅任何误导性的描述。

描述我需要的最简单方法是举个例子。我有一个 table 像:

   A   B   C
1  x
2  x   x
3      x   x

现在我想要的是单元格中每一列和每一行的公式,以及放置的每个 x 的每一列或行的名称。在这样的例子中:

        A   B   C
       1,2 2,3  3
1 A     x
2 A, B  x   x
3 B, C      x   x

列名和行名不等同于 excel 指定。它适用于单个单元格的简单 WHEN 语句 (=WHEN(C3="x";C1)),但不适用于一堆单元格 (=WHEN(C3:E3="x";C1:E1 )). should/can 这样的公式是什么样子的?

所以我找到了问题的答案。 Excel 提供正常的 CONCATENATE 功能。需要的是类似 CONCATENATEIF(德语 = verkettenwenn)的函数。通过基于 ransi from 2011 on the ms-office-forum.net 的线程在 VBA 中添加模块,可以使用函数 verkettenwenn。德语模块的代码如下所示:

Option Explicit


Public Function verkettenwenn(Bereich_Kriterium, Kriterium, Bereich_Verketten)
    Dim mydic As Object
    Dim L As Long
    Set mydic = CreateObject("Scripting.Dictionary")
    For L = 1 To Bereich_Kriterium.Count
        If Bereich_Kriterium(L) = Kriterium Then
            mydic(L) = Bereich_Verketten(L)
        End If
    Next
    verkettenwenn = Join(mydic.items, ", ")
End Function

使用该模块,上述示例的公式之一如下所示:=verkettenwenn(C3:E3;"x";$C:$K)

CONCATENATEIF函数的英文代码大概应该是:

Option Explicit


Public Function CONCATENATEIF(Criteria_Area, Criterion, Concate_Area)
    Dim mydic As Object
    Dim L As Long
    Set mydic = CreateObject("Scripting.Dictionary")
    For L = 1 To Criteria_Area.Count
        If Criteria_Area(L) = Criterion Then
            mydic(L) = Concate_Area(L)
        End If
    Next
    CONCATENATEIF = Join(mydic.items, ", ")
End Function