Циклические строки содержат определенный текст, пока не будет пустым - PullRequest
0 голосов
/ 11 октября 2019

У меня есть этот фрагмент кода, чтобы получить все значения в скобках в ячейке (ячейка содержит несколько скобок) и вставить каждое значение в отдельные ячейки в одной строке. Это работает, только если я указываю на ячейку, которую хочу разделить и запустить код.

Sub Split_Value()

Dim z As Variant

z = Split(Replace(Join(Filter(Split(Replace(Replace(Selection.Value, ")", "^#"), "(", "#^"), "#"), "^"), "|"), "^", ""), "|")

Selection.Offset(0, 22).Resize(, UBound(z) + 1) = z

End Sub

Мой вопрос заключается в том, как мне создать цикл для прохождения всех ячеек в одном столбце (сверху вниз) и запускать этот код только в ячейках, содержащих текст «Счета», и останавливать код, когдапустая ячейка?

Снимок экрана - это то, чего я хочу достичь

Большое спасибо за вашу помощь!

Извините, я очень новичок в vbaи макрос.

1 Ответ

0 голосов
/ 13 октября 2019

Привет @urdearboy Я отредактировал вопрос с прикрепленным скриншотом. По сути, я хочу, чтобы код проходил по всем ячейкам в столбце А, извлекал числа в скобках и вставлял вправо. Это то, что я до сих пор. Кажется, ошибка появляется, когда ячейка не содержит скобок.

Sub Split_Value()

Dim x As Integer
      Application.ScreenUpdating = False
      NumRows = Range("A2", Range("A2").End(xlDown)).Rows.Count
      Range("A2").Select

For x = 1 To NumRows

Dim z As Variant

z = Split(Replace(Join(Filter(Split(Replace(Replace(Selection.Value, ")", "^#"), "(", "#^"), "#"), "^"), "|"), "^", ""), "|")

Selection.Offset(0, 3).Resize(, UBound(z) + 1) = z

ActiveCell.Offset(1, 0).Select
Next
Application.ScreenUpdating = True

End Sub

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...