VBAで奇数/偶数を判定し抽出したいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAで奇数/偶数を判定し抽出したが思うように取得できず困っている
ですよね。
今回はそんなお悩みを解決する
についてまとめます!
もくじ
VBAで奇数/偶数を判定し抽出するイメージ
VBAで奇数/偶数を判定し抽出するイメージについて説明をします。
Excel側に表を作成します。
VBAを実行すると、Forループ処理で表のセルの値を取得し、
A列の番号を奇数
偶数別に
それぞれ抽出していきます。
それでは早速試してみましょう。
データを取得する表を準備する
Excel側に”Sheet1″シートを作成し、セルの値を取得する対象となる表を作成します。
奇数/偶数の判定を行う対象の列はA列となります。
奇数/偶数を判定し抽出するVBAで使用する機能
次に奇数/偶数を判定し抽出するVBAで使用する機能について説明をします。
今回メインで使用する機能は以下の通りです。
For…Next ステートメントの構文
For…Next ステートメントの構文は以下の通りです。
For counter = start To end step [ statements ]
[ Exit For ]
Next counter
For…Next ステートメントの構文の指定項目は以下の通りです。
パーツ | 説明 |
---|---|
counter | 必須。 ループ カウンターとして使用する数値変数を指定します。 この変数には、ブール値または配列要素を指定できません。 |
start | 必須です。?counter?の初期値を指定します。 |
end | 必須。?counter?の最終値を指定します。 |
step | オプション。 ループを繰り返すたびに、counter?の数が変更されます。 省略されると、step?は既定値の 0 になります。 |
statements | 省略可能。 指定した回数実行される?For?と?Next?の間の 1 つ以上のステートメント。 |
Exit For | For ループを抜けます。 |
参考:https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/fornext-statement
Mod演算子
Mod演算子は割り算の余りを求める演算子となります。
Mod演算子の構文は以下の通りです。
result = number1 Mod number2
Mod演算子の構文の指定項目は以下の通りです。
パーツ | 説明 |
---|---|
result | 必須。任意の数値変数。 |
number1 | 必須。任意の数値式。 |
number2 | 必須。任意の数値式。 |
参考:https://learn.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/mod-operator
奇数/偶数の判定は「Mod 2」を指定し、2で割り余りが0なら偶数、その反対の偶数以外であれば奇数として判定しています。
VBAで奇数を判定し抽出する
まずはVBAで奇数を判定し抽出する方法について説明をします。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub 奇数を判定し抽出する()
Dim intLastRowNum As Integer
Dim i As Integer
'"Sheet1"シートを対象にします。
With Sheets("Sheet1")
'最終行数を取得します。
intLastRowNum = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To intLastRowNum
'2の倍数(偶数)の以外(奇数)の時に出力します。
If .Cells(i, 1).Value Mod 2 <> 0 Then
Debug.Print .Cells(i, 1).Value & "|" & .Cells(i, 2).Value & "|" & .Cells(i, 3).Value
End If
Next i
End With
End Sub
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行する
VBAを実行してみましょう。
イミディエイトウィンドウにA列の値が奇数のみの値が表示されましたね!
1|A|100
3|C|120
5|E|140
7|G|160
VBAの説明
VBAについて説明をします。
“Sheet1″シートを対象にします。
With Sheets("Sheet1")
対象の表のA列最終行数を取得します。
intLastRowNum = .Cells(Rows.Count, 1).End(xlUp).Row
For…Next ステートメントで2行目から最終行目まで繰り返し処理をおこないます。
For i = 2 To intLastRowNum
2の倍数(偶数)の以外(奇数)の時に出力します。
If .Cells(i, 1).Value Mod 2 <> 0 Then
CellsオブジェクトのValueプロパティでセルの値を取得し、 “|”区切りで文字結合をして出力します。
Debug.Print .Cells(i, 1).Value & "|" & .Cells(i, 2).Value & "|" & .Cells(i, 3).Value
VBAで偶数を判定し抽出する
次にVBAで偶数を判定し抽出する方法について説明をします。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub 偶数を判定し抽出する()
Dim intLastRowNum As Integer
Dim i As Integer
'"Sheet1"シートを対象にします。
With Sheets("Sheet1")
'最終行数を取得します。
intLastRowNum = .Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To intLastRowNum
'2の倍数(偶数)の時に出力します。
If .Cells(i, 1).Value Mod 2 = 0 Then
Debug.Print .Cells(i, 1).Value & "|" & .Cells(i, 2).Value & "|" & .Cells(i, 3).Value
End If
Next i
End With
End Sub
VBAを実行する
VBAを実行してみましょう。
イミディエイトウィンドウにA列の値が偶数のみの値が表示されましたね!
2|B|110
4|D|130
6|F|150
VBAの説明
VBAについて説明をします。
2の倍数(偶数)の時に出力します。
If .Cells(i, 1).Value Mod 2 = 0 Then
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す