Excel |获取特定文本作为列表的所有列/行名称
问题描述:
我很难在标题中描述问题,因此请原谅任何误导性描述。Excel |获取特定文本作为列表的所有列/行名称
最简单的方法来描述我需要的是一个例子。我有一个表,如:
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))。这样的配方应该如何/如何?
答
所以我找到了我的问题的答案。 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$1:$K$1)
的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
+0
很高兴看到你找到答案 –
嗯,你会希望能够连接数组公式。如果没有UDF,这在Excel中是不可能的,但谷歌表单支持它。不,不知道这是否仍然如此... –