Имеются два excel-файла, в первом файле данные Артикул и маркировки к этому артикулу. Нужно подлить все маркировки соответствующие этому артикулу во второй файл (во втором файле выделено желтым как должно быть). Необходимо максимально автоматизировать процесс.
Имеются два excel-файла, в первом файле данные Артикул и маркировки к этому артикулу. Нужно подлить все маркировки соответствующие этому артикулу во второй файл (во втором файле выделено желтым как должно быть). Необходимо максимально автоматизировать процесс.Valery_d
Pelena, По первому артикулу 908013/05-06, 376 записей и они должны подтянуться в файл с примером и встать в одну ячейку напротив этого артикула. Остальные параметры учитывать не нужно.
Pelena, По первому артикулу 908013/05-06, 376 записей и они должны подтянуться в файл с примером и встать в одну ячейку напротив этого артикула. Остальные параметры учитывать не нужно.Valery_d
Pelena, я это сделал вручную, отфильтровал артикул, выделил столбец с маркировкой, вставил в word значения, скопировал их и вставил в результат в конечный файл. Вот такой изврат)) может есть какой то способ проще... подскажите.
Pelena, я это сделал вручную, отфильтровал артикул, выделил столбец с маркировкой, вставил в word значения, скопировал их и вставил в результат в конечный файл. Вот такой изврат)) может есть какой то способ проще... подскажите.Valery_d
Ну вот вариант с пользовательской функцией из Готовых решений Но, как и ожидалось, если слишком много записей, они не помещаются в ячейку. Например, артикул 908076/03-01 Файл пришлось урезать, иначе не помещается на форум. Второй файл тоже должен быть открыт
Ну вот вариант с пользовательской функцией из Готовых решений Но, как и ожидалось, если слишком много записей, они не помещаются в ячейку. Например, артикул 908076/03-01 Файл пришлось урезать, иначе не помещается на форум. Второй файл тоже должен быть открытPelena
Pelena, я сейчас сделал вручную способом описанным ранее и у меня все записи встали по данному артикулу. где то какое то ограничение видимо в этой функции?
Pelena, я сейчас сделал вручную способом описанным ранее и у меня все записи встали по данному артикулу. где то какое то ограничение видимо в этой функции?Valery_d
Да, это ограничение строковой переменной, в которой формируется результат. Немного неправильно выше написала: не в ячейку не помещается, а в переменную
Да, это ограничение строковой переменной, в которой формируется результат. Немного неправильно выше написала: не в ячейку не помещается, а в переменнуюPelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Pelena, Прошу прощения, выяснилось что всё таки нужно учитывать размер. В итоговой таблице видно что есть одинаковые артикулы например 908009/02-02 с разными размерами. Можно это учесть и поправить формулу?
Pelena, Прошу прощения, выяснилось что всё таки нужно учитывать размер. В итоговой таблице видно что есть одинаковые артикулы например 908009/02-02 с разными размерами. Можно это учесть и поправить формулу?Valery_d
Function VLOOKUPCOUPLE_spec22(Table As Variant, SearchColumnNum1 As Integer, SearchColumnNum2 As Integer, SearchValue1 As Variant, SearchValue2 As Variant, _ RezultColumnNum As Integer, Separator_ As String) 'Table - таблица где ищем 'SearchColumnNum1/2 - столбцы где ищем 'SearchValue1/2 - данные которые ищем 'RezultColumnNum - столбец откуда берём результат 'Separator_ - разделитель, желательно вводить с пробелом в конце
Dim i As Long, arr, razm As Long If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value
arr = Split(SearchValue2, "-")
For razm = arr(LBound(arr)) To arr(UBound(arr)) For i = 1 To UBound(Table) If Table(i, SearchColumnNum1) & "|" & Table(i, SearchColumnNum2) = SearchValue1 & "|" & razm Then If VLOOKUPCOUPLE_spec22 <> "" Then VLOOKUPCOUPLE_spec22 = VLOOKUPCOUPLE_spec22 & Separator_ & Table(i, RezultColumnNum) Else VLOOKUPCOUPLE_spec22 = Table(i, RezultColumnNum) End If End If Next i Next razm
If VLOOKUPCOUPLE_spec22 = 0 Then VLOOKUPCOUPLE_spec22 = "" If Len(VLOOKUPCOUPLE_spec22) > 32767 Then VLOOKUPCOUPLE_spec22 = "превышено количество символов" End Function
[/vba]
Для одного размера у меня есть версия VLOOKUPCOUPLE() с поиском по двум столбцам. Для вариантов типа 37-40 нету. Уже есть:
Function VLOOKUPCOUPLE_spec22(Table As Variant, SearchColumnNum1 As Integer, SearchColumnNum2 As Integer, SearchValue1 As Variant, SearchValue2 As Variant, _ RezultColumnNum As Integer, Separator_ As String) 'Table - таблица где ищем 'SearchColumnNum1/2 - столбцы где ищем 'SearchValue1/2 - данные которые ищем 'RezultColumnNum - столбец откуда берём результат 'Separator_ - разделитель, желательно вводить с пробелом в конце
Dim i As Long, arr, razm As Long If TypeName(Table) = "Range" Then Table = Intersect(Table.Parent.UsedRange, Table).Value
arr = Split(SearchValue2, "-")
For razm = arr(LBound(arr)) To arr(UBound(arr)) For i = 1 To UBound(Table) If Table(i, SearchColumnNum1) & "|" & Table(i, SearchColumnNum2) = SearchValue1 & "|" & razm Then If VLOOKUPCOUPLE_spec22 <> "" Then VLOOKUPCOUPLE_spec22 = VLOOKUPCOUPLE_spec22 & Separator_ & Table(i, RezultColumnNum) Else VLOOKUPCOUPLE_spec22 = Table(i, RezultColumnNum) End If End If Next i Next razm
If VLOOKUPCOUPLE_spec22 = 0 Then VLOOKUPCOUPLE_spec22 = "" If Len(VLOOKUPCOUPLE_spec22) > 32767 Then VLOOKUPCOUPLE_spec22 = "превышено количество символов" End Function