Копировать ячейку с разрывами строк - вставить значения в отдельные ячейки - PullRequest
0 голосов
/ 29 мая 2020

Есть ли в VBA способ скопировать содержимое ячейки, в которой есть несколько элементов (с разбивкой по возврату каретки), и вставить содержимое в другой рабочий лист с каждым исходным значением ячейки в своей ячейке / строке?

Единственный способ, которым я знаю, как это сделать, - это дважды щелкнуть ячейку (или скопировать из текстового поля при выделении ячейки) и просто вставить ее в одну ячейку в другом месте. Я wi sh Я мог бы сделать это вручную, но я имею дело с кучей данных, и делать это автоматически было бы замечательно.

Пример:

enter image description here

enter image description here

1 Ответ

1 голос
/ 29 мая 2020

Вот пример разделения содержимого ячейки в A1 на листе 1 на переменную x разделение на перевод строки VBA (обычно результат ALT + ENTER в ячейке Excel)

x = Split(Worksheets("Sheet 1").Range("A1").Value2, vbLf)

Затем вы можете циклически перебирать элементы x, используя счетчик i, и помещать каждый элемент в столбец B, где i+1 может быть строкой. Пример рабочей процедуры:

Sub e()
Dim x As Variant
Dim i As Long
x = Split(Worksheets("Sheet 1").Range("A1").Value2, vbLf)
For i = LBound(x) To UBound(x)
    Worksheets("Sheet 2").Range("A" & i + 1).Value2 = x(i)
Next i
End Sub    

Вы можете избежать зацикливания, транспонировав массив непосредственно в Range, например, ниже взяв разделенное содержимое A1 и поместив его в столбец B:

Sub e()
Dim x As Variant
x = Split(Range("A1").Value2, vbLf)
Range("B1:B" & UBound(x) + 1).Value2 = Application.WorksheetFunction.Transpose(x)
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...