在 Excel 中选择第 n 行

在 Excel 中选择第 n 行

我有一个包含数千行的 Excel 电子表格。我想从该电子表格中选择每 7 行。(“选择”是指删除所有其他行,或将选定的行复制到新工作表中。)

在 Excel 2003 中执行此操作的最简单的方法是什么?

也可以看看:选择 Numbers 中的每个第 n 行

答案1

  1. 插入列
  2. 在第一行插入公式 =MOD(ROW(),7)
  3. 抄下来
  4. 复制/粘贴特殊/值
  5. 数据/过滤掉你想要的(可能为 0 或 6)
  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 行都有一个选择。现在您可以做您想做的事情了。尽情享受吧!

相关内容