仅复制表中的某些值

时间:2016-02-16 16:25:19

标签: excel excel-formula

我有一张包含以下数据的表格。我想设置一个规则,当第三列为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中是否可行?

2 个答案:

答案 0 :(得分:2)

有很多方法可以做到这一点 - 最简单的方法是简单地过滤' TRUE / FALSE'列,仅显示TRUE值。然后复制&粘贴到新工作表。或者,获取数据表,并创建一个过滤TRUE值的轴。

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

在当前数据表的右侧添加一个新列。从D2开始并向下滚动[如果您有标题,则无需进一步操作。如果你没有标题,硬编码D1如果为TRUE则为1,如果为FALSE则为0],请输入以下内容:

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

D列现在将向上迭代1,每次C列中都有一行显示为TRUE。

现在,在您的另一个工作表上,您可以在A列上创建索引(1,2,3等)。在该索引旁边,您将以下内容放在B2上[假设第1行中存在标题]并向下复制在右边[这假设您的原始表格在Sheet1中]:

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

这会从适当的列中提取值[注意:没有$' s引用Sheet1&#39的列A - 这意味着当您向右移动公式时它将向右移动],无论在哪里它与列A中的相同索引号匹配,就像在Sheet1的列D中一样。

答案 1 :(得分:1)

试试这个:

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

放入第一个单元格并向右和向下复制。

Aggregate公式是在2010年推出的。它不适用于早期版本。

对于早期版本,您需要使用此Array公式:

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

由于它是一个数组公式,因此在退出编辑模式时必须使用Ctrl-Shift-Enter而不是Enter确认。然后它也可以上下复制。

enter image description here