如果满足特定条件,请使用公式将单元格值复制到另一个工作表

时间:2014-09-21 19:39:34

标签: excel-formula google-sheets

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

1 个答案:

答案 0 :(得分:2)

您不能使用公式将单元格值复制到另一个公式,因为它们只能影响它们所写的单元格值(通常)...
但是,您可以在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' - 不区分大小写”...让我从内到外解释......

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

希望这有一定道理!祝好运!并记得使用 Ctrl + Shift + 输入 ...

输入数组公式