1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VBAでExcelデータ間引きwithイミディエイトウィンドウ

Last updated at Posted at 2018-09-13

##追記
えくせるちゅんちゅんーVBAのデバッグにおける真のイミディエイトウィンドウの使い方
直接Deleteするのではなく、一度選択してからまとめてDeleteすること

##コード① ~行を一つ飛びで削除~
・エクセルシートが表示されている状態で [Alt] + [F11]→ [Ctrl] + [g]でイミディエイトウィンドウに移る
・以下のコードを打ち、[Enter]で実行

For i = 100 to 2 step -2: Rows(i).delete: Next i

###ポイント
・イミディエイトウィンドウは複数行の命令を書いて実行はできないので「 : 」で繋げて一行で書く
・2 to 100じゃなく下の行から削除していく

###注意
・他の VBAマクロと同様に消したあとに[Ctrl]+[z]で元に戻すことは出来ない。
・Rowsは Worksheetオブジェクトのプロパティ
・ワークシートオブジェクトを指定しない場合 Acitivesheet.Rowsを省略したものとして実行される。
・なので ActiveSheetの間違いに注意

###メリット
・慣れると他の方法より楽。多分

##コード② ~1000行→100行に間引き~

IF文が使えないので Select Caseで評価する

For i = 1000 to 1 step -1: Select Case (i mod 10) <> 0: Case True:Rows(i).delete: End Select: Next i

###見やすく書き直し

Private Sub Test2
  For i = 1000 to 1 step -1
    Select Case (i mod 10) <> 0
      Case True
        Rows(i).delete
    End Select
  Next i
End Sub

###メリット?
・個人的にはイケルと思うがどうだろう
・せめて IF Statementが使えれば。

###参考
【teratail】 Excel VBA イミディエイトウィンドウで「分岐のあるループ処理」を実行したい
https://teratail.com/questions/110791

##コード③おまけ ~FizzBuzz~

For i = 1 to 100: Select Case ((i mod 3) = 0) * 2 + ((i mod 5) = 0): Case -3: ?"Fizz Buzz": Case -2: ?"Fizz": Case -1: ?"Buzz": Case 0 : ?i: End Select: next i

・イミディエイトウィンドウ上では「? プラス 値」 or 「? プラス 変数」で値を出力してくれる。

###書き下し

Private Sub Test3No1
  For i = 1 to 100
    Select Case ((i mod 3) = 0) * 2 + ((i mod 5) = 0)
      Case -3
        Debug.Print "FizzBuzz"
      Case -2
        Debug.Print "Fizz"
      Case -1
        Debug.Print "Buzz"
      Case 0
        Debug.Print i
    End Select
  Next i
End Sub

・複雑な制御構造はスラスラと書けないかなーと思ったけれどなんとかなった。

####真理値表
・Trueは -1なので、True × 2 = -2
・Falseは 0

A B 2A+B
True True -3
True False -2
False True -1
False False 0

###結論
If文が使えないとちょっと厳しいかな

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?