【问题标题】:Copying only certain values from a table仅从表中复制某些值
【发布时间】:2016-02-17 01:03:38
【问题描述】:

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

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

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

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

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

    =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))
    

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

    【讨论】:

    • 很好,没有数组公式。
    • 感谢您的回复。我已经设法在 D 列的迭代中获得索引,但是似乎无法通过索引计算下一位?为什么我需要在单独的工作表上创建另一个索引。这不能在同一张纸上完成吗?
    【解决方案2】:

    试试这个:

    =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 来确认。然后它也可以上下复制。

    【讨论】:

      猜你喜欢
      • 2020-10-04
      • 2016-01-14
      • 2015-10-28
      • 1970-01-01
      • 2019-04-18
      • 1970-01-01
      • 2018-05-13
      • 2020-09-07
      • 1970-01-01
      相关资源
      最近更新 更多