Вставка нескольких ячеек в одну ячейку с помощью VBA

#excel #vba

#excel #vba

Вопрос:

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

Мне нужно, чтобы это было в одной ячейке.
Также было бы здорово, если бы я мог очистить скопированные данные от всего форматирования и использовать книгу вставки в качестве «подателя формата»

Я очень новичок в программировании и в основном читаю и копирую вставленную информацию. Ничего ценного не пробовал

 Sheet4.Range("D25", Workbooks("Underlag.xlsm").Worksheets("EU").Cells(Rows.Count, "D").End(xlUp)).Copy Workbooks("Arkiv.xlsm").Worksheets("EU").Range("E" amp; Rows.Count).End(xlUp)(2)
  

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

Комментарии:

1. Это ваш фактический код? С Destination новой строкой, без предыдущей строки, заканчивающейся на _ ?

2. Не знал, что это будет полная строка, предварительный просмотр обманул меня. Отредактировал его до нормального.

3. Вы специально копируете диапазон ячеек. Если вы хотите использовать только одну ячейку в пункте назначения, скопируйте одну ячейку для начала.

4. Есть ли у вас какие-либо предложения, как создать цикл, который проверяет строку за строкой после данных и добавляет ее в предыдущий вопрос? что-то вроде, если ячейка 1 не пуста, перейдите в ячейку 2, если ячейка 2 не пуста, ячейка 1 и ячейка 2 = Лист.ячейка 1

Ответ №1:

Может быть, вы можете попробовать это :

 Sub test_paste()

    Dim allData As String
    Dim rng As Range
    Dim cell As Range
    Dim pasteRng As Range

    Set rng = Sheet4.Range("D25", Workbooks("Underlag.xlsm").Worksheets("EU").Cells(Rows.Count, "D").End(xlUp))
    Set pasteRng = Workbooks("Arkiv.xlsm").Worksheets("EU").Range("E" amp; Rows.Count).End(xlUp)

    For Each cell In rng
        If Not IsEmpty(cell.Value) Then
            allData = allData amp; cell amp; " "
        End If
    Next

    pasteRng = allData

End Sub
  

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