Добрый день. Не знаю даже как правильно сформулировать данную задачу. Возможно ли сделать макрос, который будет искать значения по определенным словам в соседней ячейке, на листе 2, и выводить их в определенном формате и порядке, в таблицу на листе 3(там уже пример готовой таблицы)?
Добрый день. Не знаю даже как правильно сформулировать данную задачу. Возможно ли сделать макрос, который будет искать значения по определенным словам в соседней ячейке, на листе 2, и выводить их в определенном формате и порядке, в таблицу на листе 3(там уже пример готовой таблицы)?ASWP
Так нужно? Обратите внимание, что я переписал Вам кодовые имена листов [vba]
Код
Sub Nomera() With shSpis r1_ = .Cells(.Rows.Count, 1).End(3).Row If .Cells(r1_, 1) = "" Then Exit Sub ar = .Cells(1).Resize(r1_, 3) End With r0_ = 4 r11_ = Cells(Rows.Count, 1).End(3).Row If r11_ >= r0_ Then Cells(r0_, 1).Resize(r11_ - r0_ + 1, 3).ClearContents End If ReDim ar1(1 To r1_, 1 To 3) f_ = "000\ 000\ 000" For k = 1 To 3 ar1(1, k) = Format(ar(1, k), f_) Next k n_ = 1 For i = 2 To r1_ If ar(i, 2) = ar1(n_, 2) And ar(i, 3) = ar1(n_, 3) Then ar1(n_, 1) = Left(ar1(n_, 1), 11) & " - " & Format(ar(i, 1), "000\ 00\ 0000") Else n_ = n_ + 1 For k = 1 To 3 ar1(n_, k) = Format(ar(i, k), f_) Next k End If Next i Cells(r0_, 1).Resize(n_, 3) = ar1 End Sub
[/vba]
Так нужно? Обратите внимание, что я переписал Вам кодовые имена листов [vba]
Код
Sub Nomera() With shSpis r1_ = .Cells(.Rows.Count, 1).End(3).Row If .Cells(r1_, 1) = "" Then Exit Sub ar = .Cells(1).Resize(r1_, 3) End With r0_ = 4 r11_ = Cells(Rows.Count, 1).End(3).Row If r11_ >= r0_ Then Cells(r0_, 1).Resize(r11_ - r0_ + 1, 3).ClearContents End If ReDim ar1(1 To r1_, 1 To 3) f_ = "000\ 000\ 000" For k = 1 To 3 ar1(1, k) = Format(ar(1, k), f_) Next k n_ = 1 For i = 2 To r1_ If ar(i, 2) = ar1(n_, 2) And ar(i, 3) = ar1(n_, 3) Then ar1(n_, 1) = Left(ar1(n_, 1), 11) & " - " & Format(ar(i, 1), "000\ 00\ 0000") Else n_ = n_ + 1 For k = 1 To 3 ar1(n_, k) = Format(ar(i, k), f_) Next k End If Next i Cells(r0_, 1).Resize(n_, 3) = ar1 End Sub
Добрый день. А можно сделать, чтобы макрос работал только с выделенной областью, т.е. мы вручную выделяем часть таблицы, и макрос работает только с ней?
Добрый день. А можно сделать, чтобы макрос работал только с выделенной областью, т.е. мы вручную выделяем часть таблицы, и макрос работает только с ней?ASWP
я знаю что ничего не знаю, но другие не знают и этого
Сообщение отредактировал ASWP - Пятница, 15.06.2018, 08:23
_Boroda_, Спасибо, но я опять упустил еще один момент, информация будет вставляться частями, и поэтому нужно, чтобы она добавлялась в следующую пустую строчку, на 3 листе. Я попробовал сам это сделать, но ни чего не получилось.
_Boroda_, Спасибо, но я опять упустил еще один момент, информация будет вставляться частями, и поэтому нужно, чтобы она добавлялась в следующую пустую строчку, на 3 листе. Я попробовал сам это сделать, но ни чего не получилось.ASWP
я знаю что ничего не знаю, но другие не знают и этого
Сообщение отредактировал ASWP - Пятница, 15.06.2018, 17:58
А, теперь понятно Держите, но за пересечением номеров кто смотреть будет? Сначала выделили строки 1-5, загрузили, потом строки 4-9, загрузили. Строки 4 и 5 задвоились. Перепроверять это на ходу не так-то просто. Разве что метку ставить в списке. Но здесь еще другая проблема - вот Вы сделали выгрузку строк 5-7, а потом строк 8-9. И получились у Вас две строки 010 577 075 - 010 57 7077 010 577 078 - 010 57 7079 А нужно одну 010 577 075 - 010 57 7079 Поэтому гораздо лучше пользоваться макросом с кнопкой на листе Отчет и каждый раз перезагружать весь объем
А, теперь понятно Держите, но за пересечением номеров кто смотреть будет? Сначала выделили строки 1-5, загрузили, потом строки 4-9, загрузили. Строки 4 и 5 задвоились. Перепроверять это на ходу не так-то просто. Разве что метку ставить в списке. Но здесь еще другая проблема - вот Вы сделали выгрузку строк 5-7, а потом строк 8-9. И получились у Вас две строки 010 577 075 - 010 57 7077 010 577 078 - 010 57 7079 А нужно одну 010 577 075 - 010 57 7079 Поэтому гораздо лучше пользоваться макросом с кнопкой на листе Отчет и каждый раз перезагружать весь объем_Boroda_
Спасибо, все отлично работает. Нет, здесь не много другая проблема, и поэтому я решил что будет лучше использовать выделение. Номера будут иногда идти не по порядку, например
010 577 068- испорчен 010 577 075- испорчен 010 577 080 - использован 010 577 081 - использован 011 220 001- использован Если использовать макрос на листе Отчет, то он запишет их 010 577 068 - 010 577 075, 010 577 080- 011 220 001, что не верно. А вручную мы можем их выделить по отдельности. И выделять я будут только те значения, которые будут идти не по порядку.
Спасибо, все отлично работает. Нет, здесь не много другая проблема, и поэтому я решил что будет лучше использовать выделение. Номера будут иногда идти не по порядку, например
010 577 068- испорчен 010 577 075- испорчен 010 577 080 - использован 010 577 081 - использован 011 220 001- использован Если использовать макрос на листе Отчет, то он запишет их 010 577 068 - 010 577 075, 010 577 080- 011 220 001, что не верно. А вручную мы можем их выделить по отдельности. И выделять я будут только те значения, которые будут идти не по порядку.
Блин, да что ж все клещами-то вытягивать? Можно подумать, что это мне нужно, а не Вам Держите
[vba]
Код
Sub Nomera() With shSpis r1_ = .Cells(.Rows.Count, 1).End(3).Row If .Cells(r1_, 1) = "" Then Exit Sub ar = .Cells(1).Resize(r1_, 3) End With r0_ = 4 r11_ = Cells(Rows.Count, 1).End(3).Row If r11_ >= r0_ Then Cells(r0_, 1).Resize(r11_ - r0_ + 1, 3).ClearContents End If ReDim ar1(1 To r1_, 1 To 3) f_ = "000\ 000\ 000" For k = 1 To 3 ar1(1, k) = Format(ar(1, k), f_) Next k n_ = 1 For i = 2 To r1_ If ar(i, 2) = ar1(n_, 2) And ar(i, 3) = ar1(n_, 3) And --ar(i, 1) = ar(i - 1, 1) + 1 Then ar1(n_, 1) = Left(ar1(n_, 1), 11) & " - " & Format(ar(i, 1), f_) Else n_ = n_ + 1 For k = 1 To 3 ar1(n_, k) = Format(ar(i, k), f_) Next k End If Next i Cells(r0_, 1).Resize(n_, 3) = ar1 End Sub
[/vba]
Блин, да что ж все клещами-то вытягивать? Можно подумать, что это мне нужно, а не Вам Держите
[vba]
Код
Sub Nomera() With shSpis r1_ = .Cells(.Rows.Count, 1).End(3).Row If .Cells(r1_, 1) = "" Then Exit Sub ar = .Cells(1).Resize(r1_, 3) End With r0_ = 4 r11_ = Cells(Rows.Count, 1).End(3).Row If r11_ >= r0_ Then Cells(r0_, 1).Resize(r11_ - r0_ + 1, 3).ClearContents End If ReDim ar1(1 To r1_, 1 To 3) f_ = "000\ 000\ 000" For k = 1 To 3 ar1(1, k) = Format(ar(1, k), f_) Next k n_ = 1 For i = 2 To r1_ If ar(i, 2) = ar1(n_, 2) And ar(i, 3) = ar1(n_, 3) And --ar(i, 1) = ar(i - 1, 1) + 1 Then ar1(n_, 1) = Left(ar1(n_, 1), 11) & " - " & Format(ar(i, 1), f_) Else n_ = n_ + 1 For k = 1 To 3 ar1(n_, k) = Format(ar(i, k), f_) Next k End If Next i Cells(r0_, 1).Resize(n_, 3) = ar1 End Sub
_Boroda_, Спасибо, у меня просто очень много разных вопросов, и я не хотел вас сильно загружать,думал что это сложная задача, а получилось наоборот
_Boroda_, Спасибо, у меня просто очень много разных вопросов, и я не хотел вас сильно загружать,думал что это сложная задача, а получилось наоборотASWP
я знаю что ничего не знаю, но другие не знают и этого
Сообщение отредактировал ASWP - Пятница, 15.06.2018, 20:19