【发布时间】:2014-09-21 19:39:33
【问题描述】:
我正在尝试编写一个公式,以便我可以根据某些标准在另一张表中创建一个子列表。 我在 sheet1 A 和 B 中有两列。只有当 A 中的相应单元格满足某些条件时,我才想将单元格 B 中的值复制到 sheet2 中的新列表中。请告诉怎么做。
【问题讨论】:
标签: excel-formula google-sheets
我正在尝试编写一个公式,以便我可以根据某些标准在另一张表中创建一个子列表。 我在 sheet1 A 和 B 中有两列。只有当 A 中的相应单元格满足某些条件时,我才想将单元格 B 中的值复制到 sheet2 中的新列表中。请告诉怎么做。
【问题讨论】:
标签: excel-formula google-sheets
您不能使用公式将单元格值复制到另一个单元格值,因为它们只会影响写入的单元格值(通常)...
但是,您可以在 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 列中与我们在匹配行列表中的位置相关的值SMALL 排序到列表末尾),因此 INDEX 会给我们一个错误...索引超出范围。所以我们可以用空白代替它希望这是有道理的!祝你好运!记得用 Ctrl+Shift+Enter...
输入数组公式【讨论】: