У меня есть 88213 строк данных, которые варьируются от 11 до 21 столбца.VBA excel transponse много строк в столбцы с разным размером
Традиционно копирование и вставка данных не работает.
Здесь я прочитал много сценариев, но никто не предлагает очень распространенный сценарий пересадки строк в столбцы (или столбцы в строки, если вы хотите).
Может ли кто-нибудь помочь мне, как это сделать?
Я попытался это, но цикл не работает:
Sub Transponse()
Dim wrkSht As Worksheet
Dim lLastCol As Long
Dim lLastRow As Long
Dim i As Long
'Work through each sheet in the workbook.
'For Each wrkSht In ThisWorkbook.Worksheets
For j = 1 To lLastRow
'Find the last column on the sheet.
lLastCol = LastCell(wrkSht).Column
'Work through each column on the sheet.
For i = 1 To lLastCol
'Find the last row for each column.
lLastRow = LastCell(wrkSht, i).Row
'Remove the duplicates.
With wrkSht
.Range(.Cells(1, i), .Cells(j, i)).Select
Selection.Copy
Sheets("Tabelle2").Select
Range(.Cells(j, 1)).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End With
Next i
Next j
'Next wrkSht
Range("A1:K1").Select
Selection.Copy
Sheets("Tabelle2").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
End Sub
'This function will return a reference to the last cell in either the sheet, or specified column on the sheet.
Public Function LastCell(wrkSht As Worksheet, Optional Col As Long = 0) As Range
Dim lLastCol As Long, lLastRow As Long
On Error Resume Next
With wrkSht
If Col = 0 Then
lLastCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
lLastRow = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
Else
lLastCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
lLastRow = .Columns(Col).Find("*", , , , xlByColumns, xlPrevious).Row
End If
If lLastCol = 0 Then lLastCol = 1
If lLastRow = 0 Then lLastRow = 1
Set LastCell = wrkSht.Cells(lLastRow, lLastCol)
End With
On Error GoTo 0
End Function
Что не работает в цикле? Вы пробовали отлаживать его, перешагнув? Кроме того, глупый вопрос, но любой шанс «Tabelle2» - опечатка? Кроме того, ваш цикл рабочего листа закомментирован, поэтому wrksht всегда будет ничем, если вы не установите его вручную. –