Как принять 9 первых символов в формуле Excel? - PullRequest
2 голосов
/ 08 октября 2019

Я пытаюсь получить такой результат, где я проверяю на листе 1, найдены ли первые три числа в столбце А в любом месте столбца листа 2. На номера, найденные тогда, в столбце В Excel выводит Да, и еслине найдено отпечатков Excel №:

Лист 1

    A         B  
    =12300    Yes
    =56700    Yes
    =89200    No

Лист 2

    A
    =12345
    =56789
    =44498

Формула, которую я имею на данный момент на листе 1, кол. В:

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

Как добавить возможность проверить, что учитываются только 3 первых символа на обоих листах?

Ответы [ 3 ]

2 голосов
/ 08 октября 2019

Вы можете изначально попробовать:

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

И убедитесь, что вводите в виде массива через Ctrl Shift Введите

Обратите внимание на ссылку используемый диапазон с формулами массива, которые вы хотели бы попробовать, и избегайте ссылок на целые столбцы из-за производительностивопросы. В этом конкретном случае мы могли бы сделать его динамическим с помощью:

=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")

Итак, у нас это есть;формула динамического массива, в которой нет необходимости вводить как таковой =)


Если ваши значения на самом деле начинаются с =, тогда вы должны ссылаться на первые 4 символа значения с LEFT. И чтобы принять во внимание, что ваши параметры разделены через точку с запятой, окончательная формула будет выглядеть так:

=IF(ISNUMBER(MATCH(LEFT(A1;4);INDEX(LEFT(Sheet2!A1:INDEX(Sheet2!A:A;COUNTA(Sheet2!A:A));4););0));"YES";"NO")
1 голос
/ 08 октября 2019

Существует множество прекрасных ответов на этот вопрос, но это также можно сделать, добавив подстановочный знак в конец строки вместо фактического значения:

=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")

Будет делать, чтобы пропустить эту проблему. Также, пожалуйста, прочитайте комментарии к его предложению не использовать целый столбец в качестве ссылки.

1 голос
/ 08 октября 2019

Как вариант, вы также можете использовать SUMPRODUCT:

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

enter image description here

...