Выберите строку между двумя символами в ячейке, а затем вставьте строку в другую ячейку для каждой строки на листе - PullRequest
1 голос
/ 04 октября 2019

Мы ежедневно получаем сводные электронные письма в папку «Входящие» для всех наших клиентов, но они приходят с одного и того же адреса электронной почты, поэтому, когда мы их экспортируем, все клиенты отображаются в списке как один и тот же адрес электронной почты. Тема включает имя клиента, поэтому мне нужно скопировать ТОЛЬКО имя клиента из ячейки в столбце «M» в Excel в ячейку в столбце «B». Это должно происходить для каждой отдельной строки на листе, но я немного застрял на стороне кода. Не могли бы вы мне помочь?

Для справки, тема письма, которую мы получаем: NEW ALERT (имя клиента> тип оповещения> устройство)

Так что я бы хотел выбратьимя клиента, которое будет между '(' и '>'. Затем я хочу вставить это в ячейку в той же строке, в столбце 'B'.

Я хочу, чтобы это повторилосьдля каждой ячейки в столбце «M».

Я пробовал разные фрагменты кода, но ни один из них не является полным предложением, и мой опыт в VB настолько слаб, что я не совсем уверен, что я »я делаю.

Итак, мой текущий код выглядит следующим образом.

Sub CustomerNames()

Dim str As String
Dim openPos As Integer
Dim closePos As Integer
Dim midBit As String

str = ActiveSheet.Range("M" & Rows.Count).Select
openPos = InStr(str, "(")
closePos = InStr(str, ">")
midBit = Mid(str, openPos + 1, closePos - openPos - 1)


End Sub

Итак, я хотел бы получить результаты, чтобы макрос проверял каждую ячейку в столбце «M», глядя междусимвол '(' и '>' в строке, чтобы найти имя клиента. Затем он должен скопировать найденную строку в соответствующую ячейку в той же строке в столбце «B».

Фактический вывод делаетВ настоящий момент в таблицу не вносятся изменения.

1 Ответ

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

Вам нужно использовать цикл, есть множество учебных пособий, это действительно просто, и я предлагаю вам изучить его:)

Вот мой подход, предполагая, что ваши данные находятся в M2:M10, рабочая книгаThisWorkbook, а имя листа test - измените соответственно. Код выведет ваш midBit в столбце B, а номер строки в столбце A.

'set workbook and worksheet objects
Set wb = ThisWorkbook
Set ws = wb.Sheets("test")

'set range
Set rng = ws.Range("M2:M10")

'loop through each cell in set range
For Each cel In rng
    With cel
        openPos = InStr(.Value, "(") + 1
        closePos = InStr(.Value, ">") - 1
        midBit = Mid(.Value, openPos, closePos - openPos)
        'update value(s)
        ws.Cells(.row, "B").Value = midBit
        ws.Cells(.row, "A").Value = .row
    End With
Next

Имейте в виду, что это очень простой код, и нет никаких объявлений или обработки ошибок, это то, что вам нужноделать самомуПросто дать вам кое-что для начала.

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