为什么这个过滤器函数 return 值错误?

Why does this filter function return the value error?

在下面的公式中,一个#Value!错误是 returned.

=FILTER(FIND(";"&AS4756:AS4762&{6,7},AG4756),ISNUMBER(FIND(";"&AS4756:AS4762&{6,7},AG4756)))

其中ag4756是8034000;Y8033343543543;Y;38918;BS7 9XL;9;Male;N;N;N

并且AS4756:AS4762是

BS
NP
SN
GL
BA
CF
TA

当我选择求值公式时,它 return 字符串 BS7 的数字是 31,而所有其他的都是错误的。我试图从结果中过滤掉错误,所以我只得到不是错误的结果。对于 BS7,它也正确 returns TRUE,而对于所有其他的则为 false。但是下一步会导致错误。有人可以帮忙吗?

编辑:我想return 以BS7 开头的子字符串的位置。或BS6,或NP6,或NP7,等等

好的,希望以下内容对您有所帮助;让我们假设数据(垂直){BS;NP;SN;GL;BA;CF;TA}A1:A7 中,lookup-string 在 B1 中。然后,您将连接第二个(水平)数组 {6,7},它将构成以下矩阵:

现在使用 FIND(";"&A1:A7&{6,7},C1)B1 中查找这些值将导致:

您的下一步是收集数值。但是,对于第二个参数,您提供了一个 7*2 矩阵 而不是一维垂直 水平值数组。因此 FILTER() 将在 那个 步骤出错,返回 '#VALUE!'!即便如此,如果您尝试使用 MMULT() 技巧来正确检索此数组,您仍然需要处理这样一个事实:您正试图从充满错误的第一个参数中过滤矩阵。因此,我已经展示了如何从一个相对简单的公式中获得位置,该公式也可以处理错误:

=MAX(IFERROR(FIND(";"&A1:A7&{6,7},B1),""))

要获得正确的子字符串,请使用:

=MID(B1,MAX(IFERROR(FIND(";"&A1:A7&{6,7},B1)+1,"")),3)

现在这给我们留下了您可能有更多想要返回的潜在子串的可能性。如果是这样,请在评论中告诉我。