Страницы: 1
RSS
Сравнение диапазонов на соответствие с возвратом текста после разделителя, Нужно сравнить диапазоны на совпадение и записать текст после разделителя в ячейку формулы
 
Здравствуйте!

Пробую решить задачу. Не все получается. Помогите дельным советом в какую сторону смотреть:


1. Есть диапазон A1:D1 со значениями:

Страна производитель | Класс косметики | Срок годности | Тип

2. Есть диапазон F2:I5 со значениями

Страна производитель:Россия


Что требуется:

  • Взять текстовое значение из F2 до двоеточия,
  • Найти совпадение в столбце диапазона A1:D1,
  • Записать в ячейку формулы текстовое значение после запятой.
Правильный результат выглядит так:




Составил формулу.

=ЕСЛИ(СОВПАД($A$1:$D$1;ЛЕВСИМВ(E2;ПОИСК(":";E2)-1));ПРАВСИМВ(E2;ДЛСТР(E2)-ПОИСК(":";E2));"")

Она сравнивает построчно значения и при точном соответствии вставляет текст после двоеточия. Проблема в том, что важен точный порядок. А его нет. Значения параметров не согласованы по столбцам. Видимо нужны более сложные формулы сравнения массивов. ПРобовал разные варианты, серфил интернет. Не получается.

 
AlexShtov, для А3 массивная
Код
=IFERROR(INDEX(RIGHT($E3:$H3;LEN($E3:$H3)-SEARCH(":";$E3:$H3));SMALL(IF(ISNUMBER(SEARCH(A$1;$E3:$H3));COLUMN($A$1:$D$1);"");1));"")
можно протягивать
 
Код
=ЕСЛИОШИБКА(ЕСЛИ(СОВПАД(A$1;ЛЕВСИМВ($E2;ПОИСК(":";$E2)-1));ПРАВСИМВ($E2;ДЛСТР($E2)-ПОИСК(":";$E2));"");"")&
ЕСЛИОШИБКА(ЕСЛИ(СОВПАД(A$1;ЛЕВСИМВ($F2;ПОИСК(":";$F2)-1));ПРАВСИМВ($F2;ДЛСТР($F2)-ПОИСК(":";$F2));"");"")&
ЕСЛИОШИБКА(ЕСЛИ(СОВПАД(A$1;ЛЕВСИМВ($G2;ПОИСК(":";$G2)-1));ПРАВСИМВ($G2;ДЛСТР($G2)-ПОИСК(":";$G2));"");"")&
ЕСЛИОШИБКА(ЕСЛИ(СОВПАД(A$1;ЛЕВСИМВ($H2;ПОИСК(":";$H2)-1));ПРАВСИМВ($H2;ДЛСТР($H2)-ПОИСК(":";$H2));"");"")
 
Код
=ЕСЛИОШИБКА(ИНДЕКС(ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(E2:H2;":";"</i><i>")&"</i></j>";"//i[2]");
ПОИСКПОЗ($A$1:$D$1;ФИЛЬТР.XML("<j><i>"&ПОДСТАВИТЬ(E2:H2;":";"</i><i>")&"</i></j>";"//i[1]");0));"")
Изменено: Тимофеев - 23.04.2024 16:16:05
 
В A2 (и надеяться, что до двоеточия не будет лишних пробелов):
Код
=ЕСЛИОШИБКА(ПОДСТАВИТЬ(ИНДЕКС($E2:$I2; ПОИСКПОЗ(A$1&":*"; $E2:$I2; 0)); A$1&":"; ""); "")
 
вариант
=ЕСЛИОШИБКА(ПОДСТАВИТЬ(ПРОСМОТР(;-ПОИСК(A$1;$E2:$I2);$E2:$I2);A$1&":"; );"")
Страницы: 1
Наверх