Мне нужно удалить все, что между (слова, числа, символы) словом "программам" и "20" (или "19") в ячейках в одном столбце. В одной ячейке может быть несколько раз такая конструкция. Всегда есть словосочетание "программам подготовки", всегда дальше через разное количество символом идет 20.. или 19..
Пыталась скомпановать код, но он очень сырой. Как добавить "20", почему у меня проверяется 57 ячеек вместо 10, при этом некоторые перепрыгивает (видимо зациклила неправильно) ...
Буду благодарна, если ответите с пояснениями.
[vba]
Код
Sub Udalit_mejdu_slovami() For j = 1 To 10 Cells(ActiveCell.Row + j, ActiveCell.Column + 0).Select Dim a(), i&, txt$ a = Array("подготовки", "19") txt = ActiveCell.text s = Split(txt, a(0)) For i = 1 To UBound(s) sv = Split(s(i), a(1)) If UBound(sv) > 0 Then sv(0) = "" s(i) = Join(sv, a(1)) End If Next txt = Join(s, "") ActiveCell.Value = txt Next End Sub
[/vba] Я тут начала с ActiveCell, но не принципиально, можно просто прописать для Столбца В (или С).
Здравствуйте гуру!
Мне нужно удалить все, что между (слова, числа, символы) словом "программам" и "20" (или "19") в ячейках в одном столбце. В одной ячейке может быть несколько раз такая конструкция. Всегда есть словосочетание "программам подготовки", всегда дальше через разное количество символом идет 20.. или 19..
Пыталась скомпановать код, но он очень сырой. Как добавить "20", почему у меня проверяется 57 ячеек вместо 10, при этом некоторые перепрыгивает (видимо зациклила неправильно) ...
Буду благодарна, если ответите с пояснениями.
[vba]
Код
Sub Udalit_mejdu_slovami() For j = 1 To 10 Cells(ActiveCell.Row + j, ActiveCell.Column + 0).Select Dim a(), i&, txt$ a = Array("подготовки", "19") txt = ActiveCell.text s = Split(txt, a(0)) For i = 1 To UBound(s) sv = Split(s(i), a(1)) If UBound(sv) > 0 Then sv(0) = "" s(i) = Join(sv, a(1)) End If Next txt = Join(s, "") ActiveCell.Value = txt Next End Sub
[/vba] Я тут начала с ActiveCell, но не принципиально, можно просто прописать для Столбца В (или С).Studentka86
Sub tt() t_ = "программам " c_ = 2 r0_ = 2 z_ = 2 ReDim aris(1 To z_) aris(1) = " 19" aris(2) = " 20" n_ = Cells(Rows.Count, c_).End(3).Row - r0_ + 1 ar = Cells(r0_, c_).Resize(n_) For i = 1 To n_ ars = Split(ar(i, 1), t_) For j = 1 To UBound(ars) x_ = 0 x0_ = 0 For k = 1 To z_ x0_ = InStr(ars(j), aris(k)) If x0_ Then If x_ Then If x_ > x0_ Then x_ = x0_ End If Else x_ = x0_ End If End If Next k If x_ Then ars(j) = Mid(ars(j), x_ + 1) End If Next j For j = 0 To UBound(ars) - 1 ars(j) = ars(j) & Trim(t_) Next j ar(i, 1) = Join(ars) Next i Cells(r0_, c_ + 1).Resize(n_) = ar End Sub
[/vba]
Такой вариант [vba]
Код
Sub tt() t_ = "программам " c_ = 2 r0_ = 2 z_ = 2 ReDim aris(1 To z_) aris(1) = " 19" aris(2) = " 20" n_ = Cells(Rows.Count, c_).End(3).Row - r0_ + 1 ar = Cells(r0_, c_).Resize(n_) For i = 1 To n_ ars = Split(ar(i, 1), t_) For j = 1 To UBound(ars) x_ = 0 x0_ = 0 For k = 1 To z_ x0_ = InStr(ars(j), aris(k)) If x0_ Then If x_ Then If x_ > x0_ Then x_ = x0_ End If Else x_ = x0_ End If End If Next k If x_ Then ars(j) = Mid(ars(j), x_ + 1) End If Next j For j = 0 To UBound(ars) - 1 ars(j) = ars(j) & Trim(t_) Next j ar(i, 1) = Join(ars) Next i Cells(r0_, c_ + 1).Resize(n_) = ar End Sub