VBA - объединить несколько ячеек в одну строку в Excel

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

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

    'set regex input; if searching more than one column, combine into single string
    If ColNum > 0 Then
        For m = 0 To ColNum - 1
            strInput = strInput & Cells(i, ReadCol + m).Value
        Next
    Else
        strInput = Cells(i, ReadCol).Value
    End If

Где ReadCol - начальный столбец для поиска, ColNum - количество соседних столбцов для поиска (ColNum = 0 будет искать только первый столбец), i - итератор строки (каждая строка - одна запись гарантии), а strInput - то, что передается. регулярное выражение Если я ищу только один столбец, макрос работает отлично. Если я пытаюсь найти более одного, он выдает ошибку несоответствия типов. Любая помощь приветствуется!

1 ответ

Код ниже должен сделать свое дело. Возможно, вам придется изменить номер листа и начальную ячейку, но в противном случае вам будет хорошо. Да, вам также нужно изменить количество строк данных, которые вы хотите пройти.

Sub Combine_Cells_Into_string()
'The Combined string
Dim Comments_and_Codes As String

'Three Adjacent cells' data
Dim comment1 As String
Dim comment2 As String
Dim code1 As String

Dim Rows_of_data_cnt As Integer
Dim i As Integer
Rows_of_data_cnt = 10
'Iterating through your sheet
For i = 0 To Rows_of_data_cnt - 1   '-1 since we are starting at index 0 and not 1
    comment1 = Sheet1.Range("A1").Offset(i, 0).Text  'Your sheet number and starting cell may be different
    comment2 = Sheet1.Range("A1").Offset(i, 1).Text
    code1 = Sheet1.Range("A1").Offset(i, 2).Text
    Comments_and_Codes = comment1 + comment2 + code1  'Combining your data
    'Do Something with your string(This is up to you buddy)
    Sheet1.Range("G5").Offset(i, 0).Value = Comments_and_Codes
Next

End Sub
Другие вопросы по тегам