我有一个包含数千行的Excel电子表格。我想从该电子表格中选择第7行。(通过“选择”,我的意思是删除所有其他行,或将选定的行复制到新的工作表中。)
在Excel 2003中最简单的方法是什么?
另请参阅:选择数字中的第n行
我有一个包含数千行的Excel电子表格。我想从该电子表格中选择第7行。(通过“选择”,我的意思是删除所有其他行,或将选定的行复制到新的工作表中。)
在Excel 2003中最简单的方法是什么?
另请参阅:选择数字中的第n行
Answers:
就个人而言,我记录了一个宏来执行前三或四行(当然,以7行为增量),并将这些行复制到新的工作表中。然后,我将编辑宏以使用一个循环,该循环以7为步数计入工作表中已填充的行数。
伪代码示例:
Dim i as Integer
For i = 1 To 1000 Step 7
'Add current row to selection
...
Next i
'Copy the selected rows to new sheet
...
真的只是完成了兰道夫·波特的构想。
作为记录,我认为您不可能通过记录来解决这个问题。宏记录是使自己熟悉Excel对象模型的好方法,但不是编写可重用函数的很好方法。
Option Explicit
'A simple test that copies every 7th row from the active sheet to a new sheet.
Sub SimpleTest()
Dim r As Range
Dim ws As Worksheet
Set r = GetEveryNthRow(7)
If Not r Is Nothing Then
Set ws = Worksheets.Add(Before:=Sheets(1))
r.Copy ws.Range("A1")
Else
MsgBox "Nothing came back from GetEveryNthRow"
End If
Set ws = Nothing
Set r = Nothing
End Sub
'
Function GetEveryNthRow(ByVal NthRow As Long) As Range
Dim keepRows As Range
Dim r As Range
If NthRow > 0 Then
Set keepRows = Rows(1)
For Each r In ActiveSheet.UsedRange.Rows
If (r.Row Mod NthRow) = 0 Then
Set keepRows = Union(keepRows, Rows(r.Row))
End If
Next r
Set GetEveryNthRow = keepRows
Else
MsgBox "The row multiple provided must be greater than 0"
End If
Set keepRows = Nothing
End Function
1
。每第7行,