
ID と計算セルで順序付けされたスプレッドシートがあります。シートを ID と計算セルで並べ替えると、関連する行のペアが得られます。シート全体の各ペアの 2 番目の行を削除したいだけです。通常、約 3000 行あります。
2 行目を削除したり別のシートに移動する簡単な方法はありますか?
答え1
Excel の VBA に精通していないとおっしゃっているので、プログラミングの回答ではありませんが、1 回限りの場合は Excel で実行してください。
- 新しい列を追加します(Aとします)
- 最初の行(A1)を
True
- 行A2を
=NOT(A1)
- 次に、行 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
実行する前に必ずバックアップしてくださいどれでもシート上のマクロ。マクロでは元に戻す機能は使用されません。