web-dev-qa-db-ja.com

Excelでn番目の各行を選択する

数千行のExcelスプレッドシートがあります。そのスプレッドシートから7行ごとに選択したいと思います。 (「選択」とは、他のすべての行を削除するか、選択した行を新しいワークシートにコピーすることを意味します。)

Excel 2003でこれを行う最も簡単な方法は何ですか?

参照: 数値の各n行を選択

15
  1. 列を挿入する
  2. 最初の行に数式を挿入= MOD(ROW()、7)
  3. 下にコピー
  4. 特殊/値をコピー/貼り付け
  5. 必要なものをデータ/フィルターで除外する(おそらく0または6)
  6. 残りの行を削除するフィルターを削除する列を削除する
19
Todd Pierzina

個人的には、最初の3行または4行(もちろん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
user3463

ランドルフ・ポッターが始めたアイデアを本当に完成させたのは……。

記録としては、レコーディングでこれを思いつくことはないと思います。マクロの記録は、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
3
DaveParillo
  1. 列を挿入します。
  2. そこの最初の行に、1を挿入します。
  3. 行7にコピーして Ctrl 落ち込んで。
  4. そのブロックをつかんで、最後までもう一度同じことをしてください。
  5. 不要なものをデータ/フィルターして、これらを削除します。
  6. 挿入された列を削除します。
3
pnuts

7行ごとに選択するには、簡単な方法があります。列の最初の7行に1つ(最初)を書き込みます。次に、この7つの行を選択して、列全体にコピーします。必要なのは、SELECT-> GO TO SPECIAL-> select BLANKS-> OKの順に選択することだけです。これで、好きなことができます。楽しい!

1
Davide Di Grumo

7行ごとに

  1. 列を挿入する
  2. 行1から行6に「X」を入力します
  3. 行7に1を入れます
  4. 列にそのブロックを自動入力します
  5. その列で「重複の削除」を使用します
  6. 最初の行を削除します(最初の「X」を使用)。
  7. 追加した列を削除
0
Ponch