Excel 在宏中执行直到空行循环

Excel 在宏中执行直到空行循环,excel,vba,macros,Excel,Vba,Macros,我有一个数据文件,有一列和几行(动态列表)。我想将前28行转换为第一行,第二28行转换为第二行,依此类推。我想让它一直运行,直到找到一个空行。但是,当我运行代码时,它只转置前28行。我无法通过“直到清空”循环获得结果,并且无法发现错误。 谢谢你的帮助 Sub Macro1() ' ' Macro1 Macro ' ' Range("A1").Select Do Range("A1:A28").Select Selection

我有一个数据文件,有一列和几行(动态列表)。我想将前28行转换为第一行,第二28行转换为第二行,依此类推。我想让它一直运行,直到找到一个空行。但是,当我运行代码时,它只转置前28行。我无法通过“直到清空”循环获得结果,并且无法发现错误。 谢谢你的帮助

    Sub Macro1()
    '
    ' Macro1 Macro
    '
    '
    Range("A1").Select
    Do
    Range("A1:A28").Select
    Selection.Copy
    Sheets("Sheet2").Select
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,     SkipBlanks:= _
    False, Transpose:=True
    ActiveCell.Offset(1, 0).Select
    Loop Until ActiveCell.Value = ""
    End Sub

宏录制器无法为您执行循环。您确实需要将
偏移量
从循环中拉出。否则,完全限定它:

更新

Option Explicit

Sub CopyPaste()

Dim CopySheet As Worksheet
Dim PasteSheet As Worksheet
Dim MyRange As Range
Dim i As Long
Dim r As Long
Dim wf As WorksheetFunction

Application.ScreenUpdating = False

Set wf = Application.WorksheetFunction
Set CopySheet = ActiveWorkbook.Worksheets("Sheet1")
Set PasteSheet = ActiveWorkbook.Worksheets("Sheet2")
Set MyRange = CopySheet.Range("A1:A28")
r = MyRange.Rows.Count
i = 1

Do Until wf.CountA(MyRange) = 0
    MyRange.Copy
    PasteSheet.Cells(i, 1).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    Set MyRange = MyRange.Offset(r, 0)
    i = i + 1
Loop

Application.ScreenUpdating = True

End Sub

请发布您的代码。当您可以直接将代码粘贴到问题中时,请不要发布代码图像。@DirkReichel错了,不。不完整,是的。我让他把他的密码写在问题里。看起来蒂姆·威廉姆斯也是。@DirkReichel是的,我明白。我很感激。希望你会喜欢我的进步。我仍然认为自己是中间人。所以我很感谢你的反馈。是的。。。现在看起来好多了;)文件看起来是这样的(),除了第一列之外,我还需要删除包含时间戳的其余列。@yezdi您可能应该为此创建一篇单独的文章。