在本网站的一些建议的帮助下,我从几个工作表中提取了以下公式:
=FILTER(VSTACK(FRR:SOD!G3:M200),
(VSTACK(FRR:SOD!K3:K200)<>"")*
(VSTACK(FRR:SOD!K3:K200)="ABC XXXX"))
有没有办法过滤“ABC XXXX”中的部分匹配项?将 ABC 视为一个位置,将 XXXX 视为该位置的工作/职位。我希望能够将分配给 ABC 的所有人拉到新的工作表中,然后按工作/职位进行过滤。这可能吗?
答案1
以下是其中一种方法:
=LET(
α, VSTACK(FRR:SOD!G3:M200),
δ, INDEX(α,,5),
FILTER(α, (δ<>"")*(1-ISNA(XMATCH("ABC *",δ,2))),"Not Found"))
- 使用
LET()
函数有助于定义变量,并且更容易阅读,而无需重复相同的公式。 α
变量定义为使用将多个工作表数据附加到由工作表VSTACK()
范围组成的一个工作表中,并G3:M200
FRR
SOD
δ
变量定义为使用函数从返回的数组中INDEX()
提取5th
α
XMATCH()
与通配符运算符一起使用Asterix
*表示Zero
任意数量的字符。在此用例中,它使用位置并检查是否有任何位置以数组中分配的相同位置ABC *
开头ABC
和结尾。job/position
δ
- 如果找到匹配项,那么我们可以使用
ISNUMBER()
返回TRUE
,1-ISNA()
也可以使用执行相同操作,即首先ISNA()
返回错误TRUE
的位置,#N/A
然后从结果中减去错误,TRUE
这与执行的操作相同ISNUMBER()
- 最后,在
FILTER()
函数内进行包装以提取其中的内容TRUE
。
笔记:
• Excel 具有3 个通配符可以在公式中使用:
- 星号(
*
) --> 零个或多个字符。 - 问号(
?
)-->任何一个字符。 - 波浪符号(
~
) --> 转义文字字符 (~*
)、文字问号 (~?
) 或文字波浪号 (~~
)。
答案2
如果部分匹配,应该有很多种组合,下面是我想与大家分享的一种。
=FILTER(VSTACK(FRR:SOD!G3:M200),
(VSTACK(FRR:SOD!K3:K200<>"")*
((ISNUMBER(SEARCH("NEW*", VSTACK(FRR:SOD!K3:K200)))) +
(ISNUMBER(SEARCH("*MANAGER", VSTACK(FRR:SOD!K3:K200)))) > 0))
- 现在让我解释一下((ISNUMBER(SEARCH(“NEW*”
- 此处的 NEW* ,, * 是通配符,假定多个字符。
- 它可能假设新德里、纽约、新泽西等地点。
- 另一个是 (ISNUMBER(SEARCH("*MANAGER" ,其中 *MANAGER 可能假设为 EDP MANAGER、SALES MANAGER 和其他人。
注意:
您可以使用另一个通配符 ?按需要。
此外检查此链接 。
答案3
我感谢大家的意见,尽管其中一些有点复杂,因为我还在一点一点地学习。另一个论坛上的这个公式完全符合我的需要,而且我很容易理解:
=FILTER(VSTACK(FRR:SOD!G3:M200),LEFT(VSTACK(FRR:SOD!K3:K200),3)="ABC")
感谢你的帮助!