Скопируйте все из одной ячейки и вставьте в диапазон (аналогично ctrl + a, затем ctrl + c при щелчке по строке формул) в vba

У меня есть электронная таблица, содержащая кучу ячеек, заполненных строками, разделенными пробелами. Когда я нажимаю на ячейку, нажимаю ctrl + a, а затем вставляю ее в диапазон того же размера, она работает нормально, я хочу эмулировать этот процесс в VBA.

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

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

Sub Macro4()
'
' Macro4 Macro
'

'
    ActiveCell.FormulaR1C1 = _
        "ProjId ProjDesc    ScenId  ScenDesc    CellId  ValDate UserId  ProjTyp ProjMode    etc etc etc etc etc....    Value240    " & _
        ""
    Sheets("sheet1").Select
    Range("F1").Select
    Range(Selection, Selection.End(xlToRight)).Select
    ActiveSheet.Paste
End Sub

Совершенно бесполезно, так как в следующей ячейке будут совершенно другие записи.

Заранее спасибо.

Обновлено: ОБРАЗЕЦ ДАННЫХ: Вот простой образ того, чего я пытаюсь достичь. В столбце A есть каждая запись в ячейке, я хочу, чтобы она выглядела так, как в F: J. Надеюсь, это проясняет ситуацию Image of sample data

Можете ли вы опубликовать образцы данных и желаемый результат?

cybernetic.nomad 13.09.2018 21:29

@ cybernetic.nomad готово, hth

SadMrFrown 13.09.2018 21:56
0
2
37
2

Ответы 2

Пробовали ли вы использовать обрезку фасада дома для решения проблемы с белым пространством?

=trim("      Your    String     here")

становится

="Your String Here"

Это удаляет все пробелы перед началом вашей строки, которые могут вызывать проблемы с копированием / вставкой, см. Документацию здесь: Документация

Изменить: увидев ваш снимок экрана, я думаю, вам следует запустить текст в столбец на основе x, а затем запустить его снова на основе подчеркивания _

Привет, Райан, спасибо за ответ. Боюсь, что это не проблема, когда я щелкаю в строке формул и нажимаю ctrl + a и ctrl + c, а затем выбираю строку, которую я хочу вставить (в данном случае это F8: J8), она будет работать с формат, в котором он сейчас находится ... проблема в том, чтобы автоматизировать его, поскольку у меня есть десятки тысяч ячеек с такими данными). Обновлено: Я боюсь, что ваше предложение тоже не сработает ... не обязательно каждый раз быть 'x'. Спасибо.

SadMrFrown 13.09.2018 21:53

Возможно, вам поможет следующий отрывок кода ... Я предположил, что вы хотите, чтобы данные отображались так, как вы разместили их на изображении.

Public Sub separateStuff()
Dim splitArr As Variant, x As Long, lastRow As Long, firstNum As Integer, secondNum As Integer, tmpVal As String

splitArr = Split(CStr(Range("A1").Value), Chr(10))
Range("F8:J8").Value = splitArr
lastRow = Cells(Cells.rows.Count, "A").End(xlUp).Row
For x = 2 To lastRow
    tmpVal = CStr(Cells(x, 1).Value)
    firstNum = InStr(tmpVal, "X")
    secondNum = InStr(tmpVal, "_")
    Cells(8 + (x - 1), 6).Value = Mid(tmpVal, 1, firstNum)
    Cells(8 + (x - 1), 7).Value = Mid(tmpVal, firstNum + 1, secondNum - firstNum)
    Cells(8 + (x - 1), 10).Value = Mid(tmpVal, secondNum + 1, Len(tmpVal))
    Cells(8 + (x - 1), 10).NumberFormat = "mmm-yy"
Next x
Erase splitArr

End Sub

Другие вопросы по теме