Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1733 / 13646 ツリー ←次へ | 前へ→

【72300】複数行削除のループ型 マリモ 12/7/10(火) 15:55 質問[未読]
【72301】Re:複数行削除のループ型 UO3 12/7/10(火) 17:41 発言[未読]
【72302】Re:複数行削除のループ型 UO3 12/7/10(火) 18:05 発言[未読]
【72303】Re:複数行削除のループ型 UO3 12/7/10(火) 18:12 発言[未読]
【72308】Re:複数行削除のループ型 マリモ 12/7/11(水) 9:28 お礼[未読]

【72300】複数行削除のループ型
質問  マリモ  - 12/7/10(火) 15:55 -

引用なし
パスワード
   2行残して2行消すという作業を教えていただけないでしょうか。
2行消すところは空白の行と書き込みがある行と混ざっております。
初心者ですので、説明文もあると助かります。

【72301】Re:複数行削除のループ型
発言  UO3  - 12/7/10(火) 17:41 -

引用なし
パスワード
   ▼マリモ さん:

う〜ん・・・・
わかりづらいですね。

具体的に、どこの行を2行けすのですか?
それと、2行のこしてとは、どこをのこすのですか?

具体例をかいてもらえればわかりやすいと思います。

【72302】Re:複数行削除のループ型
発言  UO3  - 12/7/10(火) 18:05 -

引用なし
パスワード
   ▼マリモ さん:

もしかして以下のようなことですか?
A列のデータ最終行をシートのデータ最終行とみなし、
1行目から2行単位で、残す、消す、残す、消す・・・を行います。

Sub Sample1()
  Dim maxRow As Long
  Dim i As Long
  
  Application.ScreenUpdating = False '処理中の画面の動きをとめる
  
  'エクセルの最終列から上にみていって、データのある行番号を取得
  'これがデータ最終行"
  maxRow = Range("A" & Rows.Count).End(xlUp).Row
  'もしその行が奇数行ならその下の行を(2行ずつペアで処理するので)
  If maxRow Mod 2 > 0 Then maxRow = maxRow + 1
  '奇数ペアなら一番下のペアは残すペア
  If (maxRow \ 2) Mod 2 > 0 Then maxRow = maxRow - 2
    
  For i = maxRow To 2 Step -4 '最終行から2ペア単位に上に向かって処理
    Rows(i - 1 & ":" & i).Delete  'ペアを削除
  Next
  
  Application.ScreenUpdating = True
  MsgBox "削除が終了しました"
  
End Sub

【72303】Re:複数行削除のループ型
発言  UO3  - 12/7/10(火) 18:12 -

引用なし
パスワード
   ▼マリモ さん:

少しわかりにくいかもしれませんが、効率を考えると以下のようなコードになります。

Sub Sample2()
  Dim r As Range
  Dim i As Long
  Dim z As Long
  
  With ActiveSheet.UsedRange
    z = .Cells(.Cells.Count).Row 'シートの使用領域最終セルの行番号
  End With
  
  For i = 3 To z Step 4  '消す最初の3行目から最終行まで2行単位で
    If r Is Nothing Then
      Set r = Rows(i).Resize(2)
    Else
      Set r = Union(r, Rows(i).Resize(2))
    End If
  Next
  
  If Not r Is Nothing Then r.EntireRow.Delete
  
  MsgBox "削除が終了しました"
  
End Sub

【72308】Re:複数行削除のループ型
お礼  マリモ  - 12/7/11(水) 9:28 -

引用なし
パスワード
   ▼UO3 さん:
お返事が遅れてすみません。
両方とも試してみたら、思った通りになりました。
分かりやすく説明文も入れてくださり、
ありがとうございました。

1733 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free