如果列包含匹配值(没有 VBA),则获取列名
Get column names if column contains matching value (without VBA)
给定一个命名范围 Table1,我如何 return 数组 Table1[#Headers] 中的所有名称,其中该列中是否存在匹配的输入值?
a
b
c
1
2
3
4
5
2
6
1
2
对于上面的示例数据,我想return
search_value
headers
1
a,b
2
b,c (or b,c,c)
3
c
使用上述示例数据,我可以使用公式 =SUM(--(Table1=search_value))
计算命名 search_value
的出现次数。鉴于该公式中现有的 True/False 数组,我一直在尝试获取相对单元格映射信息。悲哀
XMATCH
只计算一维数组
AGGREGATE
is promising but I've so far been unable to evaluate CELL("address",{})
(或类似的)这样它 returns 一个我可以与 AGGREGATE
一起使用的数组
有问题的工作簿是托管在 OneDrive 中的共享工作簿,因此我想尽可能避免 VBA。
一种方式(使用 Office 365)是:
=FILTER(Table1[#Headers],BYCOL(--ISNUMBER(MATCH(Table1,E2,0)),LAMBDA(x,MAX(x))))
其中 E2 是搜索值。
串联
抱歉 - 我刚刚意识到您想要一个串联的输出:
=TEXTJOIN( ",", 1, FILTER(Table1[#Headers],BYCOL(--ISNUMBER(MATCH(Table1,E2,0)),LAMBDA(x,MAX(x)))) )
另一种基于 Excel 的 Web 方法
这取决于 Excel Web 支持的 SEQUENCE。希望它适用于 Sharepoint。如果没有,那么有一种(麻烦的)方法可以使用 ROW() 梳理序列,但如果你不必去那里会更容易。
=TEXTJOIN(",",1,
UNIQUE(IFERROR(INDEX(Table1[#Headers],
LARGE(IFERROR(MATCH(Table1,E2,0)*COLUMN(Table1[#Headers]),-1),
SEQUENCE(,COLUMNS(Table1),COLUMNS(Table1),-1))),
""),
1) )
给定一个命名范围 Table1,我如何 return 数组 Table1[#Headers] 中的所有名称,其中该列中是否存在匹配的输入值?
a | b | c |
---|---|---|
1 | 2 | 3 |
4 | 5 | 2 |
6 | 1 | 2 |
对于上面的示例数据,我想return
search_value | headers |
---|---|
1 | a,b |
2 | b,c (or b,c,c) |
3 | c |
使用上述示例数据,我可以使用公式 =SUM(--(Table1=search_value))
计算命名 search_value
的出现次数。鉴于该公式中现有的 True/False 数组,我一直在尝试获取相对单元格映射信息。悲哀
XMATCH
只计算一维数组AGGREGATE
is promising but I've so far been unable to evaluateCELL("address",{})
(或类似的)这样它 returns 一个我可以与AGGREGATE
一起使用的数组
有问题的工作簿是托管在 OneDrive 中的共享工作簿,因此我想尽可能避免 VBA。
一种方式(使用 Office 365)是:
=FILTER(Table1[#Headers],BYCOL(--ISNUMBER(MATCH(Table1,E2,0)),LAMBDA(x,MAX(x))))
其中 E2 是搜索值。
串联
抱歉 - 我刚刚意识到您想要一个串联的输出:
=TEXTJOIN( ",", 1, FILTER(Table1[#Headers],BYCOL(--ISNUMBER(MATCH(Table1,E2,0)),LAMBDA(x,MAX(x)))) )
另一种基于 Excel 的 Web 方法
这取决于 Excel Web 支持的 SEQUENCE。希望它适用于 Sharepoint。如果没有,那么有一种(麻烦的)方法可以使用 ROW() 梳理序列,但如果你不必去那里会更容易。
=TEXTJOIN(",",1,
UNIQUE(IFERROR(INDEX(Table1[#Headers],
LARGE(IFERROR(MATCH(Table1,E2,0)*COLUMN(Table1[#Headers]),-1),
SEQUENCE(,COLUMNS(Table1),COLUMNS(Table1),-1))),
""),
1) )