我有一个包含数千行的 Excel 电子表格。我想从该电子表格中选择每 7 行。(“选择”是指删除所有其他行,或将选定的行复制到新工作表中。)
在 Excel 2003 中执行此操作的最简单的方法是什么?
也可以看看:选择 Numbers 中的每个第 n 行
答案1
- 插入列
- 在第一行插入公式 =MOD(ROW(),7)
- 抄下来
- 复制/粘贴特殊/值
- 数据/过滤掉你想要的(可能为 0 或 6)
- 删除其余行 删除过滤器 删除列
答案2
就我个人而言,我会录制一个宏来执行前三或四行(当然,以 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
...
答案3
真的只是完成了兰道夫·波特开始的想法......
顺便说一句,我认为你永远不可能通过录制来实现这一点。宏录制是熟悉 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
答案4
要选择每 7 行,有一种更简单的方法:在列的前 7 行中写入一些内容。然后选择这 7 行并将它们复制到整个列上。现在您需要做的只是转到 SELECT->GO TO SPECIAL->选择 BLANKS->OK 您每 7 行都有一个选择。现在您可以做您想做的事情了。尽情享受吧!