Добрый день. Прошу совета у профи. Имеется 2 таблицы
в одной таблице данные объединены в одной ячейке пример: [BA-EL-03:null:Plum:14900:12400:1];[BA-EL-08:null:Biscuit:14900:12400:1];[BA-EL-23:null:Gold Jeans Collection:14900:12400:1];[BA-EL-10:null:BluBerry:14900:12400:1];[BA-EL-07:null:Amarant:14900:12400:1];[BA-EL-15:null:Vanilla Ice:14900:12400:1];[BA-EL-21:null:Blue Jeans:14900:12400:1];[BA-EL-11:null:Mint:14900:12400:1] где [парт номер:null:Plum:цена:12400:наличие];...
во второй данные каждые в своей ячейке пример BA-EL-03 14900 2 BA-EL-08 14900 0 BA-EL-23 14900 2 BA-EL-10 14900 1 BA-EL-07 14900 1 BA-EL-15 14900 2 BA-EL-21 14900 0 BA-EL-11 14900 0 где парт номер цена наличие
необходимо подставить цену и наличие из таблицы 2 в таблицу 1, поиск значений по парт номеру
в приложенном файле пример таблиц
Добрый день. Прошу совета у профи. Имеется 2 таблицы
в одной таблице данные объединены в одной ячейке пример: [BA-EL-03:null:Plum:14900:12400:1];[BA-EL-08:null:Biscuit:14900:12400:1];[BA-EL-23:null:Gold Jeans Collection:14900:12400:1];[BA-EL-10:null:BluBerry:14900:12400:1];[BA-EL-07:null:Amarant:14900:12400:1];[BA-EL-15:null:Vanilla Ice:14900:12400:1];[BA-EL-21:null:Blue Jeans:14900:12400:1];[BA-EL-11:null:Mint:14900:12400:1] где [парт номер:null:Plum:цена:12400:наличие];...
во второй данные каждые в своей ячейке пример BA-EL-03 14900 2 BA-EL-08 14900 0 BA-EL-23 14900 2 BA-EL-10 14900 1 BA-EL-07 14900 1 BA-EL-15 14900 2 BA-EL-21 14900 0 BA-EL-11 14900 0 где парт номер цена наличие
необходимо подставить цену и наличие из таблицы 2 в таблицу 1, поиск значений по парт номеру
Огромное спасибо ikki!! Но появился ещё один вопрос по поиску. Когда поиск происходит по буквенно-цифровым ID(парт номерам), всё хорошо. Когда только цифры, почему то ничего не ищется. Изменение свойств ячеек не помогает. Приходится изгаляться и к цифрам подставлять буква/символы, а затем удалять. Такой же косяк у меня был и с ВПР когда то. Проблему самостоятельно так и не получилось решить.
Огромное спасибо ikki!! Но появился ещё один вопрос по поиску. Когда поиск происходит по буквенно-цифровым ID(парт номерам), всё хорошо. Когда только цифры, почему то ничего не ищется. Изменение свойств ячеек не помогает. Приходится изгаляться и к цифрам подставлять буква/символы, а затем удалять. Такой же косяк у меня был и с ВПР когда то. Проблему самостоятельно так и не получилось решить.roart
не уверен, что в этом есть какой-л. смысл, ибо задача оч.конкретно-специфическая, да и решение - тоже. но: требование модератора - есть требование модератора. [vba]
Код
Sub t() Dim r As Range, c As Range, d As Object, re As Object, mc As Object, i&, s$, x
Set re = CreateObject("vbscript.regexp") re.Pattern = "\[([^:]+):([^:]+:[^:]+):([^:]+):([^:]+):(.+?)\]" re.Global = True Set d = CreateObject("scripting.dictionary")
With Sheets("прайс с ценами") a = Range(.[a3], .Cells(.Rows.Count, 1)).Resize(, 3).Value For i = 1 To UBound(a) If a(i, 1) > "" Then d(a(i, 1)) = a(i, 2) & "|" & a(i, 3) Next End With
With Sheets("заполнить") Set r = Range(.[b1], .Cells(.Rows.Count, 2)) End With
For Each c In r.Cells Set mc = re.Execute(c.Value) For i = 0 To mc.Count - 1 If d.exists(mc(i).submatches(0)) Then x = Split(d(mc(i).submatches(0)), "|") s = "[" & mc(i).submatches(0) & ":" & mc(i).submatches(1) & ":" & x(0) & ":" _ & mc(i).submatches(3) & ":" & x(1) & "]" Else s = "[" & mc(i).submatches(0) & ":" & mc(i).submatches(1) & ":0:" _ & mc(i).submatches(3) & ":0]" End If c.Value = Replace(c.Value, mc(i), s) Next Next End Sub
[/vba]
не уверен, что в этом есть какой-л. смысл, ибо задача оч.конкретно-специфическая, да и решение - тоже. но: требование модератора - есть требование модератора. [vba]
Код
Sub t() Dim r As Range, c As Range, d As Object, re As Object, mc As Object, i&, s$, x
Set re = CreateObject("vbscript.regexp") re.Pattern = "\[([^:]+):([^:]+:[^:]+):([^:]+):([^:]+):(.+?)\]" re.Global = True Set d = CreateObject("scripting.dictionary")
With Sheets("прайс с ценами") a = Range(.[a3], .Cells(.Rows.Count, 1)).Resize(, 3).Value For i = 1 To UBound(a) If a(i, 1) > "" Then d(a(i, 1)) = a(i, 2) & "|" & a(i, 3) Next End With
With Sheets("заполнить") Set r = Range(.[b1], .Cells(.Rows.Count, 2)) End With
For Each c In r.Cells Set mc = re.Execute(c.Value) For i = 0 To mc.Count - 1 If d.exists(mc(i).submatches(0)) Then x = Split(d(mc(i).submatches(0)), "|") s = "[" & mc(i).submatches(0) & ":" & mc(i).submatches(1) & ":" & x(0) & ":" _ & mc(i).submatches(3) & ":" & x(1) & "]" Else s = "[" & mc(i).submatches(0) & ":" & mc(i).submatches(1) & ":0:" _ & mc(i).submatches(3) & ":0]" End If c.Value = Replace(c.Value, mc(i), s) Next Next End Sub