всем привет,есть прайс лист,он расписан построчно,нужно чтобы эксель преобразовал нашел одинаковые артикулы ,вписал в след столбец цвета из этих артикулов,и коды из этих артикулов .чтобы было ясно прикладываю что должно получиться
цветами выделил для ясности в А1-А-17 оригинал в D,E,F 1,2 то что на выхлопе должно получиться 10048 артикул,80-Е код,и цвет такое реально вообще??
всем привет,есть прайс лист,он расписан построчно,нужно чтобы эксель преобразовал нашел одинаковые артикулы ,вписал в след столбец цвета из этих артикулов,и коды из этих артикулов .чтобы было ясно прикладываю что должно получиться
цветами выделил для ясности в А1-А-17 оригинал в D,E,F 1,2 то что на выхлопе должно получиться 10048 артикул,80-Е код,и цвет такое реально вообще??msdn
Sub test() Dim lr&, i&, data, arr(), temp, it, n% Dim dArt As Object, dCode As Object, dColor As Object lr = Cells(Rows.Count, 1).End(xlUp).Row data = [a1].Resize(lr) Set dArt = CreateObject("scripting.dictionary") For i = 1 To lr dArt(Trim(Split(data(i, 1), " ")(0))) = arr Next i [d1].CurrentRegion.ClearContents [d1].Resize(dArt.Count) = Application.Transpose(dArt.keys) Set dCode = CreateObject("scripting.dictionary") Set dColor = CreateObject("scripting.dictionary") For Each it In dArt.keys n = n + 1 For i = 1 To lr temp = Split(data(i, 1), " ") If Trim(temp(0)) = it Then dCode(Trim(temp(1))) = i dColor(Trim(temp(2))) = i End If Next i Cells(n, "e") = Join(dColor.keys, ";") Cells(n, "f") = Join(dCode.keys, ";")
dCode.RemoveAll dColor.RemoveAll Next it End Sub
[/vba]
msdn, здравствуйте, так подойдет? [vba]
Код
Sub test() Dim lr&, i&, data, arr(), temp, it, n% Dim dArt As Object, dCode As Object, dColor As Object lr = Cells(Rows.Count, 1).End(xlUp).Row data = [a1].Resize(lr) Set dArt = CreateObject("scripting.dictionary") For i = 1 To lr dArt(Trim(Split(data(i, 1), " ")(0))) = arr Next i [d1].CurrentRegion.ClearContents [d1].Resize(dArt.Count) = Application.Transpose(dArt.keys) Set dCode = CreateObject("scripting.dictionary") Set dColor = CreateObject("scripting.dictionary") For Each it In dArt.keys n = n + 1 For i = 1 To lr temp = Split(data(i, 1), " ") If Trim(temp(0)) = it Then dCode(Trim(temp(1))) = i dColor(Trim(temp(2))) = i End If Next i Cells(n, "e") = Join(dColor.keys, ";") Cells(n, "f") = Join(dCode.keys, ";")
Sub test() Dim lr&, i&, data, temp, it, n% Dim dArt As Object, dCode As Object, dColor As Object lr = Cells(Rows.Count, 1).End(xlUp).Row data = [a1].Resize(lr, 2) Set dArt = CreateObject("scripting.dictionary") For i = 1 To lr dArt(Trim(Split(data(i, 1), " ")(0))) = data(i, 2) Next i [d1].CurrentRegion.ClearContents [d1].Resize(dArt.Count) = Application.Transpose(dArt.keys) [e1].Resize(dArt.Count) = Application.Transpose(dArt.items) Set dCode = CreateObject("scripting.dictionary") Set dColor = CreateObject("scripting.dictionary") dColor.CompareMode = 1 For Each it In dArt.keys n = n + 1 For i = 1 To lr temp = Split(data(i, 1), " ") If Trim(temp(0)) = it Then dCode(Trim(temp(1))) = i dColor(Trim(temp(2))) = i End If Next i Cells(n, "i") = Join(dColor.keys, ";") Cells(n, "h") = Join(dCode.keys, ";")
dCode.RemoveAll dColor.RemoveAll Next it End Sub
[/vba]
Макрос немного изменила, чтобы цвета в разном регистре не дублировались.
msdn, вопросы по теме пишите здесь, а не в ЛС.
Цитата
в столбе B цены,можно их тоже прикрутить также ?
[vba]
Код
Sub test() Dim lr&, i&, data, temp, it, n% Dim dArt As Object, dCode As Object, dColor As Object lr = Cells(Rows.Count, 1).End(xlUp).Row data = [a1].Resize(lr, 2) Set dArt = CreateObject("scripting.dictionary") For i = 1 To lr dArt(Trim(Split(data(i, 1), " ")(0))) = data(i, 2) Next i [d1].CurrentRegion.ClearContents [d1].Resize(dArt.Count) = Application.Transpose(dArt.keys) [e1].Resize(dArt.Count) = Application.Transpose(dArt.items) Set dCode = CreateObject("scripting.dictionary") Set dColor = CreateObject("scripting.dictionary") dColor.CompareMode = 1 For Each it In dArt.keys n = n + 1 For i = 1 To lr temp = Split(data(i, 1), " ") If Trim(temp(0)) = it Then dCode(Trim(temp(1))) = i dColor(Trim(temp(2))) = i End If Next i Cells(n, "i") = Join(dColor.keys, ";") Cells(n, "h") = Join(dCode.keys, ";")
dCode.RemoveAll dColor.RemoveAll Next it End Sub
[/vba]
Макрос немного изменила, чтобы цвета в разном регистре не дублировались.Manyasha