问题描述
我有一个包含35列的表格。单元格中的值只有零和一。我需要返回每行中每1个列的标题名称。
例如: 我有标题1,标题2和标题3。 标头1下的值为0,标头2下的值为1,标头3下的值为1。
我需要标题2作为输出和标题3。
第一次匹配很容易,我通过结合索引匹配函数来做到的。
如何提取2维和3维匹配?
谢谢
解决方法
您可以使用INDEX
/ AGGREGATE
函数:
=IFERROR(INDEX($A$1:$J$1,1,AGGREGATE(15,6,(COLUMN($A2:$J2)/($A2:$J2=1)),COLUMN(A1))),"")
,
我的解决方案,但不是一个公式:
首先,我打印一个的列号,然后执行偏移操作以获取标题。
IFERROR()
是可选的。
- 单元格K2:
=IF(A2=1;COLUMN(A2);"")
- 单元格U2:
=OFFSET($A$1;0; SMALL($K2:$T2;U$1)-1)
我创建了一些虚拟数据:
然后将光标放在表中的任何位置,然后使用数据>获取和转换数据>来自表/范围。这将打开Power Query编辑器。
然后我使用“添加列”>“常规”>“索引列”>“从1开始”添加基于1的索引。我将该索引重新定位到最左边。那不是必须的,但对我有帮助。
然后我选择了索引列,并使用了Transform> Any Column> Unpivot Columns> Unpivot Other Columns。那给了我这个:
然后我将“值”列过滤为1,然后右键单击“值”列并选择“删除”。那给我留下了这个:
然后我使用Home> Close&Load将数据放回到工作簿中。索引是标头来自哪一行的指示符。
当然,随着源数据的更改,您可以右键单击结果表,然后选择“刷新”以重新运行转换。