在下面的公式中,#Value!返回错误。
=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
当我选择评估公式时,它为字符串 BS7 返回数字 31,为所有其他人返回错误。我试图从结果中过滤掉错误,所以我只得到不是错误的结果。它还正确地为 BS7 返回 TRUE,而为所有其他的返回 false。但是下一步会导致错误。任何人都可以帮忙吗?
编辑:我想返回以 BS7 开头的子字符串的位置。或BS6,或NP6,或NP7,等等。
好的,希望以下内容对您有所帮助;让我们假设数据(垂直){BS;NP;SN;GL;BA;CF;TA}
在A1:A7
,查找字符串在B1
. 然后,您将连接第二个(水平)数组{6,7}
,该数组将构成以下矩阵:
现在在B1
using中找到这些值FIND(";"&A1:A7&{6,7},C1)
将导致:
下一步是收集数值。但是,对于第二个参数,您提供了一个 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)
现在这给我们留下了您希望返回的更多潜在子字符串的可能性。如果是这种情况,请在评论中告诉我。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句