Как объединить строку значений в 1 единую строку текста?

#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: