如果特定列标题符合特定条件,则将其复制到新工作表

时间:2015-10-22 21:04:16

标签: excel excel-vba excel-formula vba

我正在尝试在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中的数据更新,这将动态更新。

2 个答案:

答案 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(),则其返回的顺序将被撤消

这是表格:

enter image description here

以下是使用该数组公式时Sheet2的样子:

enter image description here ......鲍勃怎么样?!

(#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}}