Как запретить функции COUNTIF интерпретировать текст как дату - PullRequest
0 голосов
/ 14 июня 2019

Похоже, что CountIF вернет неверные результаты, если целевой массив содержит текст, который, случайно, выглядит как дата.Я много раз искал решение, но даже не нашел никого с такой же проблемой.

Чтобы воспроизвести проблему:

Ячейка A1: 10-1968 (как текст, можетперед апострофом)

Ячейка A2: = COUNTIF(A1,"=10-68")

Ячейка A2 вернет 1, поскольку она интерпретирует А1 как содержащую дату (1 октября 1968 года), даже если онаотформатированный как текстВ моем случае значение 10-1968 - это Office # 10, Project # 1968 (и вообще не имеет ничего общего с датами).

Я пробовал различные комбинации функций TEXT и функции LEFTбез улучшений.Я думаю, что если это будет похоже на свидание, CountIF увидит это так.Как я могу предотвратить это поведение?

Примечание: я не хочу использовать SumProduct или писать UDF.И я решил проблему с MATCH, который возвращает NA, поэтому нужно было обернуть его в ISNA.Но это создает гораздо более сложную формулу, и я хочу знать, как решить эту проблему с помощью обычного использования CountIF.

Кто знает, когда строка может выглядеть как дата?Это может сделать CountIf ненадежным для использования, если только нет способа сделать так, чтобы оно совпадало только с точным совпадением текста.

Ответы [ 2 ]

2 голосов
/ 14 июня 2019

Попробуйте:

=COUNTIF(A1:A5,"*10-68")

Используя подстановочный знак звездочки *, ваш COUNTIF() заработает.Волшебным образом это даст правильный результат.Это кажется правильным вариантом в вашей ситуации, так как у вас будет только два числа перед вашим первым -.Звездочка перед этим не повредит.Похоже, что Excel начинает работать только с настоящими текстовыми строками в случае использования подстановочного знака в пределах COUNTIF().У меня самого нет объяснения этому.

Другой вариант, как уже упоминалось ранее, использует COUNTIFS() с подстановочным знаком ?, например:

=COUNTIFS(A1,"10-68",A1,"??-??")

Пример:

enter image description here

Формула в B1:

=COUNTIF(A1:A5,"*10-68")

Или

=COUNTIFS(A1:A5,"10-68",A1:A5,"??-??")
0 голосов
/ 14 июня 2019

Использование =SUM(IF(A1="10-68",1,0)), введенного как формула массива (нажав Ctrl + Shift + Enter ), даст вам искомый результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...