我正在尝试在Sheet 2中创建一个新行,该行包含Sheet 1中第1行的值。
表1具有:
A B C D E F 1 Bob Sam Ken Allen Henry Ed 2 Yes No Yes No Yes No
我想要一个公式在Sheet 2中创建第1行,只包含第2行=“是”的值。
所以表2看起来像:
{{1}}
随着Sheet 1中的数据更新,这将动态更新。
答案 0 :(得分:1)
使用此公式将起作用(在工作表2上输入A1,然后向右拖动)
=IF(Sheet1!A$2:$F$2="Yes",Sheet1!A$1:$F$1,"")
注意:按 CTRL + SHIFT + ENTER 作为数组输入。
编辑:我注意到上面的公式会在具有“no”等效值的列之间留下空白。我正在尝试获得一个消除差距的公式,但仍允许向右拖动。以下是除了我无法弄清楚为什么“Bob”在A1中没有返回。它以“Sam”开头。 (也输入数组)
=INDEX(Sheet1!$A1:$F1,SMALL(IF(Sheet1!$A2:$F2="Yes",COLUMN(Sheet1!$A1:$F1)-COLUMN(Sheet1!$A1)+1),COLUMNS(Sheet1!$A1:B1)))
有什么想法吗?我怀疑这与我使用Small()
有关。如果您将其更改为Large()
,则其返回的顺序将被撤消
这是表格:
以下是使用该数组公式时Sheet2的样子:
(#num只是因为没有更多的匹配。只需在整个事件周围抛出一个IfError([array formula], "")
来删除它。)
Edit2:搞定了!使用此公式,作为数组公式输入:
=IFERROR(INDEX(Sheet1!$A1:$F1,SMALL(IF(Sheet1!$A2:$F2="Yes",COLUMN(Sheet1!$A1:$F1)-COLUMN(Sheet1!$A1)+1),COLUMNS(Sheet1!$A1:A1))),"")
(最终范围应为$A1:A1
,而不是$A1:B1
)
答案 1 :(得分:0)
对于VBA,因为它在标签中,所以将它放在数据所在的工作表事件中:
{{1}}