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