首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用公式过滤数组(不带VBA)

使用公式过滤数组(不带VBA)
EN

Stack Overflow用户
提问于 2011-06-28 02:10:15
回答 4查看 127.5K关注 0票数 20

是否可以使用单个公式(无需自动筛选、VBA或其他列)来筛选数组?

例如,我有以下电子表格:

   A  | B     | C
 --------------------
1| ID | Class | Value
2| 1  | A     | V1
3| 1  | B     | V2
4| 2  | A     | V3
5| 3  | B     | V4
6| 3  | B     | V5

我想在VLOOKUP中使用这个数组的一个子集。也就是说,我只想匹配class为"B“的那些行。所以我希望我可以使用下面这样的东西

=VLOOKUP(A3, FILTER_FUNC(A:C, B="B"), 3, false)

其中,FILTER_FUNC是某种类型的函数或表达式,它返回一个仅包含满足条件的行的数组。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-28 02:15:27

=VLOOKUP(A2,IF(B1:B3="B",A1:C3,""),1,FALSE)

输入Ctrl+Shift+Enter

票数 16
EN

Stack Overflow用户

发布于 2011-06-28 02:38:51

如果你只想要第一个"B“值,你可以为"B”添加一个子地址,如果你想让它更通用,你可以这样做。

=INDEX(A2:A6,SUMPRODUCT(MATCH(TRUE,(B2:B6)="B",0)),1)

要基于两列使用它,只需在匹配中连接:

=INDEX(A2:A6,SUMPRODUCT(MATCH(TRUE,(A2:A6&B2:B6)=("3"&"B"),0)),1)
票数 4
EN

Stack Overflow用户

发布于 2011-06-28 02:23:52

听起来您只是想做一个典型的两列查找。http://www.dailydoseofexcel.com/archives/2009/04/21/vlookup-on-two-columns/

有很多解决方案,最简单的可能是下面的(不需要数组公式):

=SUMPRODUCT((Lookup!A:A=Param!A1)*(Lookup!B:B=Param!B1)*(Lookup!C:C))

要翻译您的特定示例,您可以使用:

=SUMPRODUCT((A1:A3=A2)*(B1:B3="B")*(C1:C3))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6497062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档