我试图将第1页上的A列的静态范围转换为循环中第3页上的行,但无济于事。这是我到目前为止使用的代码:
Sub Looptranspose()
'
' Looptranspose Macro
'
' Keyboard Shortcut: Ctrl+a
Dim x As Integer
Dim y As Integer
x = 1
y = x + 18
Range("A" & CStr(x) & ":A" & CStr(y)).Select
Selection.Copy
Sheets("Sheet3").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
x = x + 19
End Sub
如何循环,直到A行完成?此代码将列A中选定的第一个19个单元格范围转换为工作表3上的选定行。
我需要宏来在第一张纸上的A行中选择下一个19个单元格并转换到第3页的下一行。这是示例:
Excel第1步 https://drive.google.com/file/d/0B2TQdtpfUIa5OUpRTWNwLUQ5WVk/edit?usp=sharing
Excel第2步 https://drive.google.com/file/d/0B2TQdtpfUIa5TkNrVXRwOHh2TFk/edit?usp=sharing
如何继续在第1行第1页中选择以下19个单元格(直到没有更多数据)并转换到第3页中的下一行?
答案 0 :(得分:0)
查看您的代码和屏幕截图,我认为您想在一张纸上放一个长列A,并将它以19个单元格的块转置到另一张纸中。
问题是 - 您实际上没有包含循环,并且您不更新目标的位置。我试着在我的例子中解决这些问题。如果那不是您想要的,请发表评论。
注意 - 通常使用.Select
会使代码变慢,难以阅读并容易出错。最好创建引用特定范围的对象。
Sub copyChunk()
' copy chunks of 19 cells from column A of sheet 1
' and paste their transpose on sheet 3
' starting in the first row
Dim sh1 As Worksheet, sh2 As Worksheet
Dim r1 As Range, r2 As Range
Dim chunk As Integer
chunk = 19
Set sh1 = ActiveWorkbook.Sheets("sheet1")
Set sh2 = ActiveWorkbook.Sheets("sheet3")
' picking the starting point here - this could be "anywhere"
Set r1 = Range(sh1.Cells(1, 1), sh1.Cells(chunk, 1))
Set r2 = sh2.[A1]
While Application.WorksheetFunction.CountA(r1) > 0
r1.Copy
r2.PasteSpecial Paste:=xlPasteAll, SkipBlanks:=False, Transpose:=True
' move down "chunk" cells for the source
Set r1 = r1.Offset(chunk, 0)
' move down one row for the destination
Set r2 = r2.Offset(1, 0)
Wend
End Sub