Как сравнить два диапазона данных, если в ячейке несколько значений?
У меня есть два диапазона: D13:D и G13:G. В них данные. Мне необходимо сравнить эти два диапазона и посчитать одинаковые значения в них, а результат записать в колонку С на против проверямой ячейки. Условно:
В диапазоне D13 есть числа, разделённые " ,": 2031211000273 , 964002 , 9640029 , 00079245241127
G13: имеет число, которое находится в диапазоне D13: 00079245241127
Значит в ячейку С13 нужно поставить количество совпадений, т.е. 1
Я написал данную логику с помощью скрипта, но это работает не достаточно быстро. Я знаю, что формулами можно умножить скорость выполнения на 2. Но подходящую формулу я так и не смог написать, даже используя GPT. Эксперты в этой теме, прошу, помогите!
Ответы (1 шт):
Попробуйте через
=REGEXMATCH(D13;"\b"&G13&"\b")*НЕ(ЕПУСТО(G13))
Первым параметром функции REGEXMATCH() идет ссылка на ячейку со значениями, разделенными запятыми. Вторым параметром создается регулярное выражение из искомого числа (а, точнее, последовательности цифр), обрамленного символами "граница слова", чтобы не было частичных совпадений. Также в формуле есть множитель *НЕ(ЕПУСТО(G13)), который подавляет поиск пустых значений.
Да, в этой формуле не считается количество совпадений, а учитывается факт их наличия или отсутствия.
UPD. Вариант с подсчетом количества совпадений
=ЕСЛИОШИБКА((ДЛСТР(D18)-ДЛСТР(REGEXREPLACE(D18;"\b"&G18&"\b";"")))/ДЛСТР(G18);0)
Суть - заменяем все совпадения на пустоту, вычисляем количество выбывших символов и делим на длину искомой подстроки, тем самым получая число совпадений. ЕСЛИОШИБКА() используется для обработки поиска пустых подстрок.

