为什么这个过滤器函数 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)
现在这给我们留下了您可能有更多想要返回的潜在子串的可能性。如果是这样,请在评论中告诉我。
在下面的公式中,一个#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)
现在这给我们留下了您可能有更多想要返回的潜在子串的可能性。如果是这样,请在评论中告诉我。