Здравствуйте, прошу подсказать, как можно изменить макрос, чтобы он вставлял информацию в последнюю ячейку в столбце "Итого" после того как собрал информацию по критериям. Например по критерию столбца "Артикул" - 123011 + столбец "Город" - Москва, сохранял не в D8, а в D26, т.е. к последней строке с идентичными критериями. Спасибо большое за помощь!
Option Explicit
Sub abc() Dim r, lr, m, z1, z2, z3, t Dim sl: Set sl = CreateObject("Scripting.Dictionary") With ActiveSheet
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
m = .Cells(1, 1).Resize(lr, 4).Value For r = 3ToUBound(m)
z3 = m(r, 3) IfLen(z3) > 0Then
z1 = m(r, 1)
z2 = m(r, 2)
t = z1 & "|" & z2 If sl.exists(t) Then
sl(t) = sl(t) & Chr(10) & z3 Else
sl(t) = z3 EndIf EndIf Next r
For r = 3ToUBound(m)
z1 = m(r, 1)
z2 = m(r, 2)
t = z1 & "|" & z2 If sl.exists(t) Then
.Cells(r, 4) = sl(t)
sl.Remove (t) EndIf Next r EndWith EndSub
Здравствуйте, прошу подсказать, как можно изменить макрос, чтобы он вставлял информацию в последнюю ячейку в столбце "Итого" после того как собрал информацию по критериям. Например по критерию столбца "Артикул" - 123011 + столбец "Город" - Москва, сохранял не в D8, а в D26, т.е. к последней строке с идентичными критериями. Спасибо большое за помощь!
Option Explicit
Sub abc() Dim r, lr, m, z1, z2, z3, t Dim sl: Set sl = CreateObject("Scripting.Dictionary") With ActiveSheet
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
m = .Cells(1, 1).Resize(lr, 4).Value For r = 3ToUBound(m)
z3 = m(r, 3) IfLen(z3) > 0Then
z1 = m(r, 1)
z2 = m(r, 2)
t = z1 & "|" & z2 If sl.exists(t) Then
sl(t) = sl(t) & Chr(10) & z3 Else
sl(t) = z3 EndIf EndIf Next r
For r = 3ToUBound(m)
z1 = m(r, 1)
z2 = m(r, 2)
t = z1 & "|" & z2 If sl.exists(t) Then
.Cells(r, 4) = sl(t)
sl.Remove (t) EndIf Next r EndWith EndSub
Sub abc() Dim r, lr, m, z3, t Dim sl Set sl = CreateObject("Scripting.Dictionary") With ActiveSheet
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
m = .Cells(1, 1).Resize(lr, 4).Value For r = 3ToUBound(m)
z3 = m(r, 3) IfLen(z3) > 0Then
t = m(r, 1) & "|" & m(r, 2) If sl.exists(t) Then
sl(t) = sl(t) & Chr(10) & z3 Else
sl(t) = z3 EndIf EndIf Next r For r = UBound(m) To3Step -1
t = m(r, 1) & "|" & m(r, 2) If sl.exists(t) Then
.Cells(r, 4) = sl(t)
sl.Remove (t) EndIf Next r EndWith EndSub
Попробуйте так:
Sub abc() Dim r, lr, m, z3, t Dim sl Set sl = CreateObject("Scripting.Dictionary") With ActiveSheet
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
m = .Cells(1, 1).Resize(lr, 4).Value For r = 3ToUBound(m)
z3 = m(r, 3) IfLen(z3) > 0Then
t = m(r, 1) & "|" & m(r, 2) If sl.exists(t) Then
sl(t) = sl(t) & Chr(10) & z3 Else
sl(t) = z3 EndIf EndIf Next r For r = UBound(m) To3Step -1
t = m(r, 1) & "|" & m(r, 2) If sl.exists(t) Then
.Cells(r, 4) = sl(t)
sl.Remove (t) EndIf Next r EndWith EndSub
со второй строки пропускает и не вставляет, оставляет пустой
не совсем Вас понимаю В ячейку D26 вставляются значения "Микроволновка, утюг", потому что сочетание 123011-Москва встречается дважды, в одном - микроволновка, в другом - утюг. Согласно первому сообщению:
со второй строки пропускает и не вставляет, оставляет пустой
не совсем Вас понимаю В ячейку D26 вставляются значения "Микроволновка, утюг", потому что сочетание 123011-Москва встречается дважды, в одном - микроволновка, в другом - утюг. Согласно первому сообщению:
msi2102, все прекрасно работает, только пропускает строку 2,в ячейке C3 когда присутствует комментарий, он его не забирает и не вставляет в ячейку D2. Всё остальное работает отлично как и нужно.
msi2102, все прекрасно работает, только пропускает строку 2,в ячейке C3 когда присутствует комментарий, он его не забирает и не вставляет в ячейку D2. Всё остальное работает отлично как и нужно.Grimmm
Ну всё верно, так и должно быть. Видите у Вас в самом первом коде два цикла, они начинаются с 3, нужно заменить на 2, скорее всего у Вас данные в оригинале начинаются с третьей строки, а в примере со второй, замените:
For r = 3ToUBound(m)
на
For r = 2ToUBound(m)
и
For r = UBound(m) To3Step -1
на
For r = UBound(m) To2Step -1
Ну всё верно, так и должно быть. Видите у Вас в самом первом коде два цикла, они начинаются с 3, нужно заменить на 2, скорее всего у Вас данные в оригинале начинаются с третьей строки, а в примере со второй, замените: