#excel #vba #concatenation
#excel #vba #конкатенация
Вопрос:
Я новичок в VBA в Excel, но я пытаюсь объединить все значения в строке данных в одну текстовую строку, и у меня возникают проблемы с ее пониманием. Я пробовал циклы For-Next и выполнял циклы Until, чтобы захватить каждое значение ячейки до конца строки, а затем объединить его (с пробелами между ними) в одну ячейку, из которой я могу копировать и вставлять данные. Заранее спасибо за вашу помощь!
Sub String_Acct_Numbers()
Dim AccountNumber As String
Dim StartRow As Integer
Dim NumRows As Integer
NumRows = Range("A1", Range("A2").End(xlDown)).Rows.Count
For StartRow = 2 To NumRows
AccountNumber = Cells(StartRow, 1).Value amp; " " amp; Cells(StartRow 1,
1).Value
Next StartRow
Range("C1") = AccountNumber
End Sub
Комментарии:
1. Ваш код выглядит немного странно. Он даже не компилируется для меня. Одна строка выделена красным как проблема. Можете ли вы опубликовать образец данных и ожидаемый результат? Как новый пользователь, пожалуйста, прочтите это: отредактируйте свое сообщение, чтобы предоставить эти сведения, затем оставьте комментарий.
Ответ №1:
Предыдущий ответ на 100% правильный, используйте TEXTJOIN
, если он у вас есть. Если у вас его нет, вы можете использовать это…
Public Function ConcatenateCells(ByVal rngCells As Range, Optional ByVal strDelimiter As String = " ") As String
Dim objCell As Range
For Each objCell In rngCells
If ConcatenateCells <> "" Then ConcatenateCells = ConcatenateCells amp; strDelimiter
ConcatenateCells = ConcatenateCells amp; objCell.Text
Next
End Function
… вы можете ссылаться на эту функцию непосредственно из ячейки, что проще, чем запускать макрос для обновления ячейки, и да, уже задокументировано множество различных реализаций, но если вы не собираетесь искать, приведенное выше даст вам то, что вы хотите.
Ответ №2:
Если у вас Office 365 или Excel 2019, это можно сделать без VBA, используя функцию TextJoin .
Если у вас нет ни одной из этих версий Excel, пожалуйста, используйте один из множества кодов VBA, которые были опубликованы в Интернете за последние 20 лет, для объединения диапазонов.