2014-01-14 49 views
0

我试过将表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个单元格的所选第1个范围转换为表单3中的选定行。

我需要宏来选择表单A中行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

我怎样才能继续选择以下中的行19个细胞的片材1(直到没有更多的数据),并转置到下一行在第3页?

+0

为什么你需要逐一循环?我看不到您的工作表,浏览器不兼容。 :)你不能一口气吗? – L42

+0

我认为你有你的条款混乱起来。 'A'绝对不是一排。如果你改说你的问题,我肯定我可以帮忙。我在这里没有看到任何复杂的事情,但你必须更清楚。另外,无法访问Google云端硬盘,因此...如果有更明确的解释,就更好。无论如何,让我试试看:基本上,在A列中,你有19行要转移到Sheet3中的下一个空行,是吗?你想继续下去,直到没有更多的A? A中数据的行数总是可以被19整除? :) – Manhattan

+0

感谢您的反馈。弗洛里斯帮助我下面。这里有很多好点子。我不是程序员,但你必须从某个地方开始,对吧? – mrdejean

回答

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 
+1

弗洛里斯,这正是我所需要的,没有循环,去图。非常感谢您的帮助。 – mrdejean

+0

不客气。它花了一些猜测,但屏幕截图帮助。不确定你的意思是“没有循环”。在你的代码中,或在我的代码中......? – Floris