Страницы: 1
RSS
Поиск значения и возврат другого из этой же строки
 
Добрый день. Помогите пожалуйста подобрать формулу. Бьюсь 3й день. Пример.

Есть мой прайс в нём наименование штрих кода, наименование товара, моя цена и колонка Предложение.
Есть 2я вкладка Новый прайс в ней наименование, цена и штрих коды.

Задача сравнить мой штрих код со штрихкодами из нового прайса (кодов на 1 товар может быть огромное кол-во) и при совпадении кодов вернуть в мой прайс цену предложения.

Заранее спасибо.
 
А если таблицу Новый прайс сначала преобразовать, а потом уже формулой - не вариант?
Код
Sub transp()
    Dim r As Long, c As Integer, rt As Long
    Dim sh As Worksheet, sht As Worksheet
    Set sh = ThisWorkbook.Sheets("Новый прайс")
    ThisWorkbook.Sheets.Add after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    Set sht = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    sht.Name = "tmp"
    rt = 2
    For r = 2 To sh.Cells(sh.Rows.Count, 1).End(xlUp).Row
        c = 4
        While sh.Cells(r, c) <> ""
            sht.Cells(rt, 1) = sh.Cells(r, 1)
            sht.Cells(rt, 2) = sh.Cells(r, 2)
            sht.Cells(rt, 3) = sh.Cells(r, 3)
            sht.Cells(rt, 4) = sh.Cells(1, c)
            sht.Cells(rt, 5) = sh.Cells(r, c)
            rt = rt + 1
            c = c + 1
        Wend
    Next r
    MsgBox "Done"
End Sub
 
Этой таблицой будет пользоваться женщина. Скопировать ячейку и вставить она сможет, а вот на счёт преобразования я не уверен. Вдобавок она постоянно сверяет различные прайсы, а они не одного формата, а произвольных.
 
Код
Sub Price()
Dim wsMyPrice As Worksheet, wsNewPice As Worksheet
Dim MyPrice(), NewPrice(), x&, r&, i&
Set wsMyPrice = ThisWorkbook.Sheets("Наш прайс")
Set wsNewPice = ThisWorkbook.Sheets("Новый прайс")
MyPrice = wsMyPrice.Range("A1").CurrentRegion.Value
NewPrice = wsNewPice.Range("A1").CurrentRegion.Value
For x = 2 To UBound(MyPrice, 1)
    For r = 2 To UBound(NewPrice, 1)
        If MyPrice(x, 3) = NewPrice(r, 2) Then
            For i = 4 To UBound(NewPrice, 2)
                If MyPrice(x, 2) = NewPrice(r, i) Then wsMyPrice.Range("E" & x) = NewPrice(r, 3)
            Next i
        End If
    Next r
Next x
End Sub
 
Решение не элегантное, а деревянное, как табурет, но возможно, для женщины пойдет :)
 
Еще вариант в Е2:
Код
=ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ(B2;'Новый прайс'!2:2;0);"")<>"";'Новый прайс'!C2;"")
 
Спасибо Вам огромное!
 
Цитата
_Igor_61 написал:
=ЕСЛИ(ЕСЛИОШИБКА(ПОИСКПОЗ(B2;'Новый прайс'!2:2;0);"")<>"";'Новый прайс'!C2;"")
как это будет выглядеть? можете показать? У меня пустое значение...
Изменено: Иван Иванов - 24.10.2017 22:01:30
 
Вот так:
 
Цитата
_Igor_61 написал:
Вот так:
У вас ищет значение только в определённой строке. А код может быть в любой, а их 20-30 тыс. строк и 50-100 столбцов. И это минимум.
 
Цитата
Поиск значения и возврат другого из этой же строки
???        Не так понял, значит. Для чего тогда наименования товаров? Штрих код в строке с молотком, а цена - для болта?
 
Цитата
_Igor_61 написал:
???        Не так понял, значит. Для чего тогда наименования товаров? Штрих код в строке с молотком, а цена - для болта?
Это просто пример. Поиск товара осуществляется исключительно по коду товара! К примеру в новом прайсе этот клд будет в 10й строке и в Вашем примере будет выдавать уже пустое значение. Наименование в разных фирмах могут различаться, а код товара нет, но их может быть большое кол-во на 1 товар!
Страницы: 1
Наверх