只复制表格中的某些值

我有一张有以下数据的工作表。 我想设置一个规则,当第三列为True时,将前两列中的值粘贴到单独的表中。

1 1 0 False 1 1.2 0 False 1 1.4 0 False 1 1.6 0 False 1 1.8 0 False 1 2 0 False 1 2.2 0 False 1 2.4 0 False 1 2.6 0 False 1 2.8 0 False 2 1 0 False 2 1.2 0 False 2 1.4 0 False 2 1.6 0 False 2 1.8 0 False 2 2 0 False 2 2.2 33.5 False 2 2.4 79.8 False 2 2.6 100 PASSED 2 2.8 100 PASSED 

所需的输出:

  new table with values that have 'TRUE' 1 1 0 False 2 2.6 1 1.2 0 False 2 2.8 1 1.4 0 False 1 1.6 0 False 1 1.8 0 False 1 2 0 False 1 2.2 0 False 1 2.4 0 False 1 2.6 0 False 1 2.8 0 False 2 1 0 False 2 1.2 0 False 2 1.4 0 False 2 1.6 0 False 2 1.8 0 False 2 2 0 False 2 2.2 33.5 False 2 2.4 79.8 False 2 2.6 100 PASSED 2 2.8 100 PASSED 

这可能在Excel中?

有很多方法可以做到这一点 – 最简单的方法是简单地过滤“TRUE / FALSE”列,只显示TRUE值。 然后复制并粘贴到新的工作表。 或者,把你的数据表,并创build一个filter的TRUE值。

对于稍微更dynamic的方法,无需手动干预即可更新,您可以执行以下操作:

在当前数据表的右侧添加一个新列。 从D2开始向下滚动[如果您有标题,则不需要进一步的操作。 如果没有标题,硬编码D1如果为TRUE则为1,如果为FALSE,则为0),放置如下:

 =IF(C2,MAX($D$1:D1)+1,"") 

D列现在迭代1,每次C列中有一行表示TRUE。

现在,在另一张表上,你可以在列A上创build一个索引(1,2,3等)。在这个索引旁边,把下面的内容放在B2上[假设头部存在于第一行],然后复制到正确[这假定您的原始表在Sheet1中]:

 =INDEX('Sheet1'!A:A,MATCH($A1, 'Sheet1'!$D:$D,0)) 

这将从适当的列[注意:没有$引用Sheet1的A列 – 这意味着它将向右移动您的公式向右移动]的值,在任何匹配列A相同的索引号的值,就像你在Sheet1的专栏D.

尝试这个:

 =INDEX(A$1:A$20,AGGREGATE(15,6,ROW($1:$20)/($D$1:$D$20="PASSED"),ROW(1:1))) 

放入第一个单元格,然后向右下方复制。

汇总公式于2010年推出。它不适用于早期版本。

对于较早的版本,您将需要使用此数组公式:

 =INDEX(A$1:A$20,SMALL(IF($D$1:$D$20="PASSED",ROW($1:$20)),ROW(1:1))) 

由于这是一个数组公式,所以在离开编辑模式时,必须使用Ctrl-Shift-Enter而不是Enter来确认。 然后它也可以复制和复制。

在这里输入图像说明