我在excel中编写宏的问题。我试图获得excel自动复制工作表的内容在a3:f3,k3,m3:n3,s3,u3:ab3
范围内,然后每行包含其中的数据,直到它遇到一个空行。我可以让它做一个专栏,但我无法弄清楚如何做我需要的奇异范围。任何提示或帮助将不胜感激。
答案 0 :(得分:1)
试试这个:
Sub test()
Dim my_range As Range
Dim ws As Worksheet
Set my_range = ThisWorkbook.Sheets("Sheet1").Range("A3:F3,K3,M3:N3,S3,U3:AB3")
Set ws = ThisWorkbook.Sheets("Sheet2")
Do
If Application.WorksheetFunction.CountA(my_range) > 0 Then
my_range.Copy ws.Range("A" & ws.Rows.Count).End(xlUp).Offset(1, 0)
Set my_range = my_range.Offset(1, 0)
Else
Exit Do
End If
Loop
End Sub
这将复制Sheet2中最后一个空行的Range("A3:F3,K3,M3:N3,S3,U3:AB3")
中的值。
Sheet1中的示例数据:
执行代码后,数据在Sheet 2中将如下所示。
希望这是你的开始。
随意使用它以满足您的需求。
答案 1 :(得分:1)
以下方法使用Find
确定感兴趣列中最后使用的行,然后将结果范围复制到新工作表上的单元格A3
Sub DetermineRange()
Dim ws As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Range("a3:f3,k3,m3:n3,s3,u3:ab3")
Set rng2 = rng1.EntireColumn.Find("*", [a1], , , , xlPrevious)
Set rng1 = Intersect(rng1.EntireColumn, Rows(rng1.Row & ":" & rng2.Row))
Set ws = Sheets.Add
rng1.Copy ws.[a3]
Application.CutCopyMode = False
End Sub
答案 2 :(得分:0)
让您了解多个范围和每个范围(单元格)的内容:
Sub DisplayRanges()
Dim oItem As Variant, aRanges As Variant, oRng As Range
aRanges = Array("a3:f3", "k3", "m3:n3", "s3", "u3:ab3")
For Each oItem In aRanges
Debug.Print "oItem: " & oItem
For Each oRng In ActiveSheet.Range(oItem)
Debug.Print vbTab & oRng.Address
Next
Next
End Sub