сопоставить данные в 2 ячейках У меня есть 2 ячейки с похожими данными, извлеченными из 2 разных сайтов. Данные в D6 предположительно являются более короткой версией H6. Я хочу поставить "Match" или "No Match" в E6. Для "Совпадения" в обеих ячейках должны совпадать либо 2 набора чисел, либо 1 набор чисел с одним словом. Я пытался сопоставить последний 1 символ и первые 2 символа от D6 до H6, используя эту формулу

=IF(ISERROR(SEARCH((LEFT(D6,2)*(RIGHT(D6,1))),H6)),"Match","No match")

но все равно получаю "Матч".

Поскольку последний 1 символ из D6 не соответствует или даже не существует в ячейке H6, результатом должно быть "Нет соответствия"

Что не так с формулой?

1 ответ1

1

В Excel на ленте "формула", в разделе "Аудит формул", есть инструмент "Оценка формулы". Это позволит вам пройтись по формуле в ячейке и посмотреть, как она рассчитывается.

Что не так с формулой:

Глядя на формулу, которую вы используете, вы почти всегда будете получать ошибку, потому что у вас есть строка, умноженная на другую строку в качестве поискового запроса.

Синтаксис для поиска:

=SEARCH(FIND TEXT, WITHIN TEXT, OPTIONAL START POINT)

Глядя на вашу формулу:

=SEARCH((LEFT(D6,2)*(RIGHT(D6,1))),H6)

Ваш поисковый запрос:

(LEFT(D6,2)*(RIGHT(D6,1)))

Для начала, слишком много скобок. Это может быть упрощено до:

LEFT(D6,2)*RIGHT(D6,1)

Таким образом, вы говорите Excel искать первые две буквы в левой части D6, умноженные на последнюю букву D6. Имея в виду:

РУ * 2

Попробуйте сделать математику на этом самостоятельно. Если у вас есть два числа слева от строки, ваша математика будет работать, и строка автоматически преобразуется в числа для математической операции.

Когда у вас есть буквы, генерируется ошибка, и из-за этой ошибки вы получаете ISERROR, что приводит к значению true. Поэтому вы всегда получаете MATCH, за исключением случая, когда D6 начинается с 2 чисел в строке, а D6 заканчивается цифрой.

КАК УЛУЧШИТЬ, ЧТО ВЫ ХОТИТЕ ДЕЛАТЬ

В основном вы ищете два условия, чтобы быть правдой. Вы хотите, чтобы начало обоих было равным, и вы хотите, чтобы конец обоих был равным. Похоже, И будет работать здесь. Если обе проверки - ИСТИНА, вы хотите, чтобы результат МАТЧА отображался. Эта концепция может выглядеть так:

=IF(AND(CONDITION1, CONDITION2), "MATCH", "NO MATCH")

Поэтому мы рассмотрим разбивку вашей формулы и посмотрим, как заставить ее работать:

=IF(AND(SEARCH(LEFT(D6,2),H6&D6)=1,SEARCH(RIGHT(D6,1),H6&D6,LEN(H6))=LEN(H6),H6<>""),"Match","No match")

Итак, давайте разберемся с этим. Вы заметите, что в разделе AND есть три проверки состояния.

Проверьте 1

SEARCH(LEFT(D6,2),H6&D6)=1

Это ищет первые два символа из D6 в комбинации H6 с добавленным в конец D6 и проверяет, равен ли результат 1. Результат одного указывает, что первые два символа были найдены в первой позиции D6. Причина, по которой D6 добавляется в текст для поиска, заключается в том, что если первые две буквы не найдены в H6, они будут найдены в D6, что позволяет избежать потенциальной ошибки при поиске. Теперь, если H6 окажется пустым, это означает, что вы можете получить истинный результат. Это "ложное срабатывание" относится к третьему условию в функции AND.

Проверьте 2

SEARCH(RIGHT(D6,1),H6&D6,LEN(H6))=LEN(H6)

Подобно проверке 1, на этот раз в H6 выполняется поиск последнего символа D6 с привязкой D6 к концу, чтобы избежать той же потенциальной ошибки, что и при проверке 1, и снова будет существовать та же вероятность "ложного срабатывания", которая обнаруживается третья проверка состояния. На этот раз мы начинаем смотреть на последний символ в H6 вместо первого символа по умолчанию. это делается путем добавления:

,LEN(H6)

И вместо проверки, чтобы увидеть, возвращает ли результат поиска 1 для первой позиции, результаты поиска проверяются, чтобы увидеть, равны ли они последней позиции H6. Если бы вы смотрели последние два символа из D6, вам пришлось бы изменить LEN(H6) на LEN(H6)-1 чтобы начать поиск второго последнего символа и посмотреть, была ли найдена ваша строка во втором последнем символе из конец.

Проверьте 3

H6<>""

Это быстрая проверка, чтобы увидеть, если H6 пуст. Если H6 пусто, совпадать не с чем, и поэтому результатом будет "Нет совпадения".

Только когда все проверки имеют значение ИСТИНА, функция ЕСЛИ возвратит "Истина". Иначе, ЕСЛИ вернет ЛОЖЬ

ЕСТЬ ЕЩЕ НОМЕР ДЛЯ УЛУЧШЕНИЯ ОБЩЕГО СЛУЧАЯ ТОГО, ЧТО ВЫ ПЫТАЕТЕСЬ ДЕЛАТЬ!

Выше будет проверяться совпадение первых двух символов в обоих столбцах и совпадение последних символов в обоих столбцах.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .