Страницы: 1
RSS
Найти стоимость доставки для определенных моделей товаров
 
Здравствуйте.

Следующая проблема.

Есть файл Сравнение.xlsx. В нем два листа - Базовые данные (где ищем информацию) и Заполненный файл (куда все вставляем).

Мне требуется найти стоимость доставки (столбцы "доставка 1", доставка "2" и т.д) для определенных моделей товаров для магазина Империя техно. Проблема в том, что через стандартный ВПР стоимость доставки не вытащить, поскольку у нас не один столбец, а целых десять. Т.е. нужно проверять как название магазина, так и модель товара.

Хочу соединить функции ЕСЛИ и ВПР, но что-то не получается. Прошу посоветовать как решить проблему.
 
excel_lover, ИМХО не силен в формулах но кажется ВПР не подойдёт, т.к. =ВПР(A:A;'Базовые данные'!A:A а потом ещё надо найти название магазина "империя техно" из 10 магазинов в этой строке и уже от него значение доставки. это скорее всего будет ИНДЕКС+ПОИСКПОЗ но эту связку я ещё не осилил, и то не факт что она. буду ждать решения самому стало интересно.

Я бы предложил название "Поиск стоимости доставки товара из магазина Империя техно"
Изменено: Wild.Godlike - 06.03.2019 12:22:13
 
excel_lover, а можно показать  в каком виде вы хотите получить желаемый результат!?*
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
Mershik написал:
excel_lover , а можно показать  в каком виде вы хотите получить желаемый результат!?*
В виде числа. К примеру, для модели "Холодильник Beko ds-333020" это число равно 590.  
 
excel_lover, сделайте себе User Defined Function - VLOOKUP2, которая работает аналогично ВПР, но по 2 критериям.

Код функции внизу. Вставляете в модуль, потом в функциях UDF ищете ее. Единственный нюанс, что в отличии от ВПР диапозоны выделять надо по ячейкам, а не целиком столбец. То есть не F:F, а F1:F1000 например. В остальном все тоже самое.
Код
Function VLOOKUP2(Table1 As Range, SearchValue1 As Variant, Table2 As Range, SearchValue2 As Variant, ResultColumn As Range)
        Dim i As Integer
                                    
        For i = 1 To Table1.Rows.Count
                If Table1.Cells(i, 1) = SearchValue1 Then
                If Table2.Cells(i, 1) = SearchValue2 Then
                VLOOKUP2 = ResultColumn.Cells(i, 1)
                    Exit For
                    End If
                End If
                Next i
                  
End Function
Изменено: Paul Zealand - 06.03.2019 12:23:07
 
попробуйте соединить ИНДЕКС и ПОИСКПОЗ
Код
=ИНДЕКС(ИНДЕКС('Базовые данные'!C1;ПОИСКПОЗ('Заполненный файл'!RC1;'Базовые данные'!C1;)):ИНДЕКС('Базовые данные'!C52;ПОИСКПОЗ('Заполненный файл'!RC1;'Базовые данные'!C1;));ПОИСКПОЗ("Империя техно";ИНДЕКС('Базовые данные'!C1;ПОИСКПОЗ('Заполненный файл'!RC1;'Базовые данные'!C1;)):ИНДЕКС('Базовые данные'!C52;ПОИСКПОЗ('Заполненный файл'!RC1;'Базовые данные'!C1;));)+2)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
excel_lover, для B2 где С1 - наименование - Империя техно
Код
=ИНДЕКС('Базовые данные'!$1:$1048576;ПОИСКПОЗ($A2;'Базовые данные'!A:A;0);ПОИСКПОЗ($C$1;ИНДЕКС('Базовые данные'!$1:$1048576;ПОИСКПОЗ($A2;'Базовые данные'!A:A;0);0)+2)
Не бойтесь совершенства. Вам его не достичь.
 
Цитата
excel_lover написал:
для магазина Империя техно.
А если нет для данного товар Империя техно? (две последние строки)
 
. Уже все нашли. :)
Изменено: Пытливый - 06.03.2019 12:27:26
Кому решение нужно - тот пример и рисует.
 
вариант на PQ
вместо пустых значений выставлен код 99999
 
=ВПР(A2;'Базовые данные'!$A$2:$AZ$12;ПОИСКПОЗ("Империя техно";ИНДЕКС('Базовые данные'!$A$2:$AZ$12;ПОИСКПОЗ(A2;'Базовые данные'!$A$2:$A$12;););)+2;)
Страницы: 1
Наверх