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


15

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

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

関連項目:Numbersの各n番目の行を選択する

回答:


19
  1. 列を挿入する
  2. 最初の行に式= MOD(ROW()、7)を挿入します
  3. コピーダウン
  4. 特別/値のコピー/貼り付け
  5. 必要なものをデータ/フィルターで除外(0または6)
  6. 残りの行を削除するフィルターを削除する列を削除する

悪い解決策ではありません。私は自分のマクロが好きなので、それが私の最初の選択ですが、これも少しの努力で機能します。

2
= MOD(ROW()、7)その2番目の引数が必要です。
dkusleika 2009

3

個人的には、最初の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
...

マクロを使用する場合は、逆方向に<code> <pre> Sub delrows()i = 988 To 1 Step -7 Sheet1.Cells(i、1).Offset(1、0).Resize (6).EntireRow.Delete Next i End Sub </ pre> </ code>行を削除しても、ループは狂わないでしょう。
dkusleika 2009

彼はちょうど(コメントに暗黙の)範囲オブジェクトに行を追加、削除いない
DaveParillo

1
「選択とは、他のすべての行を削除することを意味する...」
dkusleika 2009年

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

再利用可能な概念であなたと。

3
  1. 列を挿入します。
  2. そこの最初の行に、を挿入し1ます。
  3. 押したまま行7にコピーしCtrlます。
  4. そのブロックをつかみ、最後まで同じことを繰り返します。
  5. 不要なものをデータ/フィルターし、削除します。
  6. 挿入された列を削除します。

答えてくれてありがとう。ステップ3について詳しく説明してください。Ctrlキーを押しながらマウスをドラッグするつもりですか?現時点ではExcel 2003にアクセスできないため、テストできません。
パトリックマッケルヘイニー

1

7行ごとに選択するには、より簡単な方法があります。列の最初の7行に1つ(最初の行)を入力します。次に、この7行を選択し、列全体にコピーします。必要なのは、SELECT-> GO TO SPECIAL-> select BLANKS-> OKに行くことです。各7行を選択します。これで、必要なことを実行できます。楽しい!


0

7行ごとに、

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

スーパーユーザーへようこそ。これは基本的に、受け入れられた答えで提案された方法であり、pnutsによるものであり、より多くの作業(および破壊的)です。何が貢献しているかは明らかではありません。
fixer1234

それは単に別のメニューを使用しているだけであり、私の見解では実際にはより多くの作業も、元のポスター要求よりも破壊的でもありません(「他のすべての行を削除」)。
ポンチ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.