Excel 2007 で 1 行おきに削除する方法

Excel 2007 で 1 行おきに削除する方法

ID と計算セルで順序付けされたスプレッドシートがあります。シートを ID と計算セルで並べ替えると、関連する行のペアが得られます。シート全体の各ペアの 2 番目の行を削除したいだけです。通常、約 3000 行あります。

2 行目を削除したり別のシートに移動する簡単な方法はありますか?

答え1

Excel の VBA に精通していないとおっしゃっているので、プログラミングの回答ではありませんが、1 回限りの場合は Excel で実行してください。

  1. 新しい列を追加します(Aとします)
  2. 最初の行(A1)をTrue
  3. 行A2を=NOT(A1)
  4. 次に、行 A2 をすべての行まで下にドラッグします。

A次に、列が である自動フィルターを適用しfalse、返されたすべての行を選択して削除し、フィルターを削除します。

答え2

これが一度限りのタスクである場合は、Seph の回答を使用してください。繰り返し実行する必要がある場合は、次のように VBA を使用します。

Sub DemoDeleteAlternateRows()
    Dim iRow As Long, LastRow As Long
    Dim sh As Worksheet
    Set sh = ActiveSheet ' <-- Maybe change this to refer to a specific sheet
    Application.FindFormat.Clear ' Just in case Find was last used with a Format
    LastRow = sh.Cells.Find(What:="*", After:=sh.Cells(1, 1), _
      SearchDirection:=xlPrevious, SearchOrder:=xlByRows, SearchFormat:=False).Row
    For iRow = LastRow To 1 Step -1
        ' Delete even numberede rows (to delete odd numbered
        ' rows, instead use  If iRow Mod 2 = 1 Then).
        If iRow Mod 2 = 0 Then
            sh.Rows(iRow).Delete
        End If
    Next
End Sub

実行する前に必ずバックアップしてくださいどれでもシート上のマクロ。マクロでは元に戻す機能は使用されません。

関連情報