3

Фон

Я использую Excel 2013.

У меня есть таблица Excel с именем SiteCategories , с несколькими столбцами категорий, а затем сайты в этих столбцах, например:

Таким образом, мы могли бы получить эти значения, используя =SiteCategories[Category1]

У меня также есть список URL-адресов - подумайте о полных URL-адресах, таких как http://www.sitea.com/page/page.html

Что я хотел бы сделать

Для этого огромного списка URL-адресов я бы хотел, чтобы рядом с ними были столбцы, указывающие, относятся ли они к категории A или категории B, например:

Я бы хотел, чтобы при сопоставлении не учитывался регистр, поскольку URL-адреса не нормализованы. Однако, если это облегчает задачу, я могу обработать поля или обернуть их в lower() хотя я думаю, что этот процесс тоже сможет это сделать.

Где я застрял

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

По сути, я хочу сказать, что если какой-либо фрагмент текста в данном столбце категории находится внутри URL (без учета регистра), то URL находится в этой категории.

Тем не менее, большинство функций MATCH и SEARCH , похоже, не поддерживают запрос диапазона значений.

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

Как я это делаю сейчас

В настоящее время формула, которую я использую, - это оператор OR , использующий несколько формул SEARCH , как показано ниже (где F3 - это ячейка с URL):

=OR(ISNUMBER(SEARCH("sitea.com",F3)), ISNUMBER(SEARCH("siteb.com",F3)),ISNUMBER(SEARCH("sitec.com",F3)), ISNUMBER(SEARCH("sited.com",F3)),ISNUMBER(SEARCH("sitee.com",F3))) 

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

1 ответ1

1

Вы можете использовать формулу массива, введенную с помощью Ctrl + Shift + Enter. Поиск не чувствителен к регистру, так что должно быть хорошо.

=OR(IFERROR(SEARCH(SiteCategories[Category1],A2),0))

Здесь настроено обрабатывать пустые строки в таблице благодаря Кайлу в комментариях.

=OR(IFERROR(IF(SiteCategories[Category2]<>"",SEARCH(SiteCategories[Category2],A‌​2),0),0))

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