如何接受 excel 公式中的 9 个第一个字符?

How to accept 9 first characters in excel formula?

我正在尝试获得这种结果,我在 sheet1 上检查是否在 sheet2 的 A 列的任何位置找到 A 列的前三个数字。如果找到数字,则在 B 列 excel 打印 Yes,如果没有找到 excel 打印 No:

Sheet 1

    A         B  
    =12300    Yes
    =56700    Yes
    =89200    No

Sheet 2

    A
    =12345
    =56789
    =44498

我目前在 sheet1 col B 上的公式是

=IF(ISNUMBER(MATCH(A1;Sheet2!A:A));"Yes";"No")

如何增加检查是否仅考虑两张纸中的前 3 个字符的可能性?

您可以最初尝试:

=IF(ISNUMBER(MATCH(LEFT(A1,3),LEFT(Sheet2!A1:A3,3),0)),"YES","NO")

并确保通过CtrlShiftEnter[=17=输入数组]

注意已用范围的引用,您可能想尝试使用数组公式,并且避免整列引用,因为性能问题.在这种特定情况下,我们可以通过以下方式使其动态化:

=IF(ISNUMBER(MATCH(LEFT(A1,3),LEFT(Sheet2!A1:INDEX(Sheet2!A:A,COUNTA(Sheet2!A:A)),3),0)),"YES","NO")

现在我们得到了一个动态公式,我们不妨尽量避免使用必须输入它作为数组公式。我们可以实施 INDEX 来解决这个问题:

=IF(ISNUMBER(MATCH(LEFT(A1,3),INDEX(LEFT(Sheet2!A1:INDEX(Sheet2!A:A,COUNTA(Sheet2!A:A)),3),),0)),"YES","NO")

就是这样;避免必须输入的动态数组公式 =)


如果您的值实际上以 = 开头,那么您应该使用 LEFT 引用值的前 4 个字符。并且还要考虑到您的参数是通过分号分隔的,最终公式如下所示:

=IF(ISNUMBER(MATCH(LEFT(A1;4);INDEX(LEFT(Sheet2!A1:INDEX(Sheet2!A:A;COUNTA(Sheet2!A:A));4););0));"YES";"NO")

或者,您也可以使用 SUMPRODUCT:

=IF(SUMPRODUCT(--(LEFT(A1,3)=LEFT(Sheet2!$A:$A,3))),"Yes","No")

这个问题有很多完美的答案,但也可以通过在字符串末尾添加通配符而不是实际值来完成:

=IF(ISNUMBER(MATCH(LEFT(A1,3)&"*",Sheet2!A:A,0)),"Yes","No")

正如@JvdV 所指出的,这不适用于数值,仅适用于文本。按照他的建议:

=IF(ISNUMBER(MATCH(LEFT(A1,3)&"*",INDEX(TEXT(Sheet1!A:A,"0"),),0)),"Yes","No")

最好忽略这个问题。也请阅读他建议不要使用整个专栏作为参考的评论。