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