#excel #excel-formula #excel-2013
#excel #excel-формула #excel-2013
Вопрос:
к сожалению, я не могу найти решение следующей проблемы.
У меня есть таблица (ДАННЫЕ), состоящая из столбца A с неуникальными идентификаторами и столбца B с несколькими 4-значными кодами, разделенными пробелом.
В другой таблице (КОДЫ) у меня есть столбец A для уникальных идентификаторов, которые встречаются в столбце A (ДАННЫЕ), и столбец B с несколькими 4-значными кодами, разделенными запятыми.
Моя цель — проверить все записи в первой таблице (ДАННЫЕ) и перечислить те NOK, у которых есть хотя бы один код в столбце B, идентифицированный в другой таблице (КОДЫ)
Я использовал следующую формулу:
=IFERROR(IF(ISNUMBER(SEARCH(INDEX(CODES, MATCH([@A], CODES[A], 0), MATCH("B", CODES[#Kopfzeilen],0)),[@B])), "NOK", "OK"), "OK")
К сожалению, это только поиск полной строки в столбце B (КОДЫ), а не для каждого значения, разделенного запятой.
Возможно ли получить формулу без использования VBA (поскольку это создает проблемы в sharepoint, где хранится файл)?
Комментарии:
1. вы могли бы сделать это намного проще для себя и сделать что-то вроде
IF(IF(FIND("code1",cell_ref)>0,1,0) IF(FIND("code2",cell_ref)>0,1,0) IF(FIND("code3",cell_ref)>0,1,0)>0,"NOK","OK")
предположения, что нет тонны кодов2. Сколько существует потенциально разделенных запятыми значений? Вы могли бы написать формулу, которая проверяет, совпадают ли перед первой запятой, между вторым и третьим совпадениями и т. Д.
3. Кроме того, вы усложняете себе задачу, поскольку сначала вам приходится разбивать критерии поиска, а не составлять список из одного столбца.
4. Существует около 10 кодов для каждого максимального уникального идентификатора (принадлежности для каждого элемента). Таблица кодов в основном указывает элементы с определенными аксессуарами, которые находятся на рассмотрении («NOK»). В целом существует около 100 возможных кодов (аксессуаров). Я также несколько раз пробовал использовать метод перечисления идентификатора в таблице КОДОВ, используя только одну запись в столбце B (AB123 — CD01, AB123 — EF02, CD345 — ZD01, EF678 — AB34), но это не сработало с «ИНДЕКСОМ». Таким образом, жестко заданный «поисковый запрос», такой как «code1», кажется непрактичным.
Ответ №1:
Используйте FILTERXML:
=IF(OR(ISNUMBER(SEARCH(FILTERXML("<a><b>"amp;substitute(INDEX(CODES, MATCH([@A], CODES[A], 0), MATCH("B", CODES[#Headers],0)),",","</b><b>")amp;"</b></a>","//b"),[@B]))), "NOK", "OK")
Убедитесь, что вы перешли #Headers
на свой язык, если он отличается от английского
Это необходимо будет подтвердить с помощью Ctrl-Shift-Enter вместо Enter при выходе из режима редактирования в Excel 2013.