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

Имею таблицу вида:
НомерКодСтавка
110207%
110501000
110202 Евро
2102015%
21050650
что пытаюсь получить:
Для каждого значения в столбце Номер, Если в столбце Код повторяется какое-либо значение (в примере выше для товара номер 1 повторяется Код 1020), то соответствующие данные из столбца Ставка надо объединить вместе через знак +, т.е. запись должна принять вид 7%+2 Евро. Ожидаемый результат такой:
НомерКодСтавка
110207%+2 Евро
110501000
110207%+2 Евро
2102015%
21050650
Пытаюсь во вложении это реализовать через VBA, но что-то не соображу.... Не поможете придать нужное направление. Во вложении задан диапазон, указаны переменные, начат цикл for each.
 
А точно нужны полностью дублирующиеся строки типа
110207%+2 Евро
в итоге? Или достаточно одной такой строки?  
Изменено: Максим Зеленский - 31.10.2014 07:35:34
F1 творит чудеса
 
Максим Зеленский, Можно одну
 
Было такое дело...

Код
Function VLOOKUPCOUPLE_spec(Table As Variant, SearchColumnNum1 As Long, SearchColumnNum2 As Long, SearchValue As Variant, _
                            RezultColumnNum As Long, Separator_ As String)
'Table - таблица, где ищем
'SearchColumnNum1/2 - столбцы, где ищем
'SearchValue - данные, которые ищем, задавать с "|" посередине
'RezultColumnNum - колонка, откуда берём результат
'Separator_ - разделитель, желательно вводить с пробелом в конце

    Dim i As Long
    If TypeName(Table) = "Range" Then Table = Table.Value
    For i = 1 To UBound(Table)
        If Table(i, SearchColumnNum1) & "|" & Table(i, SearchColumnNum2) = SearchValue Then
            If VLOOKUPCOUPLE_spec <> "" Then
                VLOOKUPCOUPLE_spec = VLOOKUPCOUPLE_spec & Separator_ & Table(i, RezultColumnNum)
            Else
                VLOOKUPCOUPLE_spec = Table(i, RezultColumnNum)
            End If
        End If
    Next i
    If VLOOKUPCOUPLE_spec = 0 Then VLOOKUPCOUPLE_spec = ""
End Function
 
В ячейке M5 пишем

Код
=VLOOKUPCOUPLE_spec($A$2:$D$6,1,3,J5 & "|" &L5,4,"+")
 
Но результат в порядке поступления:
0.52ЕВР+7.5%
Изменено: Hugo - 31.10.2014 09:48:29
 
Hugo,Спасибо. счас попробуем
 
Кстати, если в коде цикл
For i = 1 To UBound(Table)
изменить на обратный - результат будет как нужно, обратный :)
 
Hugo,все получилось, спасибо.
Страницы: 1
Наверх