【问题标题】:Use formula to copy cell values to another sheet if certain condition is satisfied如果满足特定条件,使用公式将单元格值复制到另一张工作表
【发布时间】:2014-09-21 19:39:33
【问题描述】:

我正在尝试编写一个公式,以便我可以根据某些标准在另一张表中创建一个子列表。 我在 sheet1 A 和 B 中有两列。只有当 A 中的相应单元格满足某些条件时,我才想将单元格 B 中的值复制到 sheet2 中的新列表中。请告诉怎么做。

【问题讨论】:

    标签: excel-formula google-sheets


    【解决方案1】:

    您不能使用公式将单元格值复制到另一个单元格值,因为它们只会影响写入的单元格值(通常)...
    但是,您可以在 Sheet2 中编写一个公式来根据条件从 Sheet1 中提取数据...
    例如数组公式(用Ctrl+Shift+Enter输入):

    =IFERROR(INDEX(Sheet1!$B$1:$B$4,SMALL(IF(ISERROR(FIND("o",LOWER(Sheet1!$A$1:$A$4))),9999,ROW(Sheet1!$A$1:$A$4)),ROW())),"")
    

    在这个例子中,我使用的条件是“A 列中的值包含字母 'o' - 不区分大小写”......让我从里到外解释......

    • ISERROR(FIND("o",LOWER(...))) 将给我们 FALSE 如果值有一个 'o',TRUE 否则
    • 我们正在处理单元格数组Sheet1!$A$1:$A$4(可以根据需要进行扩展),而不是只给出一个值,这给了我们一个TRUE 和FALSE 值的数组
    • IF(ISERROR(...),9999,ROW(...)) 表示如果没有 'o',我们将获得值 9999,否则我们将获得数组中单元格的行号 - 所以这给了我们一个混合了 9999 和行号的数组李>
    • SMALL(...,ROW()) 让我们从数组中选择其中一个值 - 在这种情况下,按大小顺序排列项目,我们使用 ROW() 作为我们的计数器(即在 Sheet2!A1 - ROW() 是 1,我们得到数组中的最小值)...如果我们有一个标题行,我们可以做 ROW()-1 例如...实际上我们正在通过 Sheet1 中符合我们条件的行号排序列表进行索引
    • INDEX(Sheet1!$B$1:$B$4,...) 将为我们提供 Sheet1 中 B 列中与我们在匹配行列表中的位置相关的值
    • 有时我们有 9999(对于所有不符合条件的单元格 - 这些单元格使用 SMALL 排序到列表末尾),因此 INDEX 会给我们一个错误...索引超出范围。所以我们可以用空白代替它

    希望这是有道理的!祝你好运!记得用 Ctrl+Shift+Enter...

    输入数组公式

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2015-01-17
      • 2017-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多