我有两张工作表:一张包含原始数据,另一张我想在其中仅过滤掉感兴趣的行。在原始数据表中,我有两列需要过滤(例如,列 B 和 C)。列 B 仅是“是/否”。列 C 中的单元格有 26 个唯一值可供选择(例如,“A”到“Z”)。
原始数据示例(表 1):
可乐 | 胶束B | 科尔 | 寒冷的 |
---|---|---|---|
名称_1 | 是的 | A | 更多数据 |
名称_2 | 不 | 德 | 更多数据 |
名称_3 | 是的 | 钾 | 更多数据 |
名称_4 | 是的 | G | 更多数据 |
过滤器示例(第 2 页,所需):
可乐 | 胶束B | 科尔 | 寒冷的 |
---|---|---|---|
名称_1 | 是的 | A | 更多数据 |
名称_4 | 是的 | G | 更多数据 |
在上面的例子中,我想过滤掉只有 B 号上校回答“是”, 和仅来自 Col C 的 {A, B, C, G, H, J}。我该怎么做?
我尝试过类似的事情:
=FILTER(Sheet1!$A:$K, AND(Sheet1!$B:$B="Yes", ISNUMBER(MATCH(Sheet1!$G:$G,Lookup!$A$2:$A$7,0))), "No Rows Found")
其中 'Lookup' 是包含以下内容的工作表:
查找值 |
---|
A |
乙 |
C |
G |
H |
J |
我一直得到#VALUE!任何帮助都将不胜感激。
答案1
不要使用函数AND()
中的函数FILTER()
,而要使用*
运算符AND()
=FILTER(Sheet1!A2:D5,(1-ISNA(XMATCH(Sheet1!C2:C5,LOOKUP!A2:A7)))*(Sheet1!B2:B5="Yes"))
不要使用整个范围,而是使用Structured References
akaTables
仅选择所需的范围。
或者,如果你不愿意使用Structured References
aka,Tables
那么使用以下方法来获取_LastRow
,在下面的公式中,我假设Column A
将有一个值,并且可以作为索引列_LastRow
=LET(
_LastRow, MATCH(2,1/(Sheet1!A:A<>"")),
_Data, Sheet1!A2:INDEX(Sheet1!A:D,_LastRow,),
_CriteriaOne, (INDEX(_Data,,2)="Yes"),
_CriteriaTwo, 1-ISNA(XMATCH(INDEX(_Data,,3),LOOKUP)),
FILTER(_Data,_CriteriaOne*_CriteriaTwo,"No Rows Found"))
_LastRow
--> 变量使用函数返回数据范围的最后一行MATCH()
。_Data
--> 使用变量_LastRow
从中提取整个数据Sheet1
INDEX()
_CriteriaOne
-->Boolean
对 B 列进行逻辑检查以查看是否如此Yes
。_CriteriaTwo
--> 与 Sheet 进行精确匹配LOOKUP
以找到所需的匹配项。- 最后,使用
FILTER()
返回输出,在执行Boolean
操作后返回True
或1
所有匹配项。否则它将返回No Rows Found
笔记: LOOKUP
LOOKUP Sheet
指的是-->中定义的命名范围=LOOKUP!$A$2:$A$7
,下面是一份 Excel 文档下载。