Как насчет решения VBA? Это скопирует все выбранные из верхней левой выбранной ячейки в нижнюю правую выбранную ячейку. Если вы выберете несоответствующие ячейки, этот код в любом случае соберет все, что находится между верхним левым и нижним правым. Вы можете изменить это, конечно. Так было проще. Он помещает вкладки между столбцами и разрывы строк между строками.
Sub CopyText()
Dim obj As Object
Dim rng As Range
Dim r As Long, c As Long
Dim s As String
Dim rTL, rBR, cTL, cBR
rTL = Selection.Cells(1, 1).Row
cTL = Selection.Cells(1, 1).Column
For Each rng In Selection.Cells
If rng.Row < rTL Then rTL = rng.Row
If rng.Column < cTL Then cTL = rng.Column
If rng.Row > rBR Then rBR = rng.Row
If rng.Column > cBR Then cBR = rng.Column
Next
For r = rTL To rBR
For c = cTL To cBR
s = s & Cells(r, c).Value
If c < cBR Then s = s & Chr(9)
Next
If r < rBR Then s = s & vbNewLine
Next
Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
obj.SetText s
obj.PutInClipboard
Set obj = Nothing
End Sub
Если вам интересно об этой части:
Set obj = CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
... это просто версия позднего связывания Set obj = New DataObject
поэтому вам не нужно добавлять ссылки в VBA.