【マクロVBA練習問題8】偶数・又は奇数の個数を計算・判別し、その結果を表示する

マクロVBA練習問題




練習問題と内容について

・練習問題の狙い

このシリーズでは課題を元にマクロVBAを実践することでスキルを身につけることが出来ます。

正直、ソースコード作成については実践あるのみです!

答えのコードについては数例挙げますが、「もっといい答えがある」などの意見があれば

問い合わせから連絡ください!  

こんな問題を作ってほしいなどの意見もお待ちしております!

・練習問題8について

こちらはマクロVBAの初歩的な知識になります。

指定された範囲の偶数・又は奇数の個数を計算し、その結果を表示する練習問題となります。

それでは頑張っていきましょう!

練習問題の内容と動作説明

問題内容

セル番地D2/D5にセル番地A1からA10までの偶数または奇数の個数を表示する

動作説明

VBAを使用して、セル番地A1からA10までの値の中で偶数の個数を計算し、その結果をセル番地D2/D5に表示します。

具体的には、セル番地A1からA10までの値を順番に取得し、偶数であればカウントを増やします。

最終的にカウントされた偶数の個数をセル番地D2に表示、奇数をD5に表示する必要があります

ヒント


以下のヒントを参考にして解答コードを作成してみてください。

・ヒントその1

取得した値が偶数であるかどうかを判定する条件分岐を使用します。

条件分岐はIf Thenを使用します。

割ったときの余りを計算する際にはMod演算を行います。
例えば「10 Mod 3」の場合、「10÷3」で答えの「1」が出力されます。

この構造を活用して、偶然か奇数か求めます。

・ヒントその2

ループを使用してセル番地A1からA10までの値を順番に取得します。

例えば下記のような見本を紹介します。

For Each cell In Range(“A1:A10”)
 ‘ここに処理
Next cell
これにより、A1からA10まで順に繰り返し処理を行います。

・ヒントその3

偶数であれば、偶数の個数をカウントアップします。

カウントアップ方法は「変数=変数+1」で指定した変数がカウントアップされます。

・ヒントその4 

最終的にカウントされた偶数の個数をセル番地D2/D5に表示するために、セルへの値の代入を行います。

例えば、指定セル = 入力したい文字で文字の入力が可能です。
これらのヒントを参考にして、解答コードを作成してみてください。  

 

最新・便利な機能を搭載したExcel・officeを試しませんか?
Excel 2013以下を使用している方はサポートが終了しているので注意が必要です!
【最新2023年】Excel・Officeの価格比較!あなたに合ったオススメの製品の選定方法から購入 ► 独学エクセル塾 (dokugakuexcel.com)
 

 

解答コード

では回答を見ていきましょう!

・回答その①

Sub Exercise8to1()
Dim rng As Range
Dim cell As Range
Dim count As Integer

‘ 対象の範囲をセル番地A1からA10までに設定
 Set rng = Range(“A1:A10”)

‘ 初期化
 count = 0

‘ セル番地A1からA10までの値をループで処理
For Each cell In rng
‘ 値が偶数かどうかを判定
 If cell .Value Mod 2 = 0 Then
  count = count + 1 ‘ 偶数の個数をカウントアップ
 End If
Next cell

‘ カウントされた偶数の個数をセル番地I1に表示
Range(“D2”).Value = count
Range(“D5”).Value = 10 – count

End Sub

上記のコードをVBAエディタに貼り付けて実行すると、
セル番地A1からA10までの値の中で偶数の個数がセル番地D2に表示されます。

その後総数の「10」から偶数の値を引くことで、セル番地D5に奇数を表示させます。

 

偶数か、判別するためにはMod演算で2で割ったあまりをもとめます。

つまり、「If cell .Value Mod 2 = 0  」で対象の値を2で割ったのち、その値が「0」か条件分岐します。
結果が「0」の場合は偶数なのでカウントアップをする仕組みです。


☟繰り返し処理の見本

Dim 変数名 AS 変数の型

For Each 変数名 In 配列・コレクション

‘処理

Next 変数名

 

・回答その②

Sub Exercise8to2()
Dim count As Integer
Dim i As Integer

‘ 初期化
count = 0

‘ セル番地A1からA10までの値を順番に判定
For i = 1 To 10
 If Cells(i , 1).Value Mod 2 = 0 Then
  count = count + 1 ‘ 偶数の個数をカウントアップ
 End If
Next i

‘ カウントされた偶数の個数をセル番地I1に表示
Range(“D2”).Value = count
Range(“D5”).Value = 10 – count

End Sub

回答その①と処理方法は同じですが繰り返し処理が異なります。

先ほどは「For Each」で繰り返し処理を行っていましたが、今回は「For Next」で繰り返し処理を行っています。

For Nextの見本は下記の通りです。

Sub 繰り返し動作()
 Dim 変数 As Long

   For 変数 = 開始値 To 終わり値 Step 1回で進む数
       ‘ここに処理プログラム
   Next 変数
End Sub

 

 

必要な知識

この問題を解くためには、以下の基本的な知識が必要です。

ループ構造

偶数の個数を数えるためには、セル番地A1からA10までの値を1つずつ判定する必要があります。
ループ構造を使用して、指定した範囲のセルを順番に処理する方法を理解する必要があります。
今回はFor Each文For Next文を使用しました。

割った後の余りを求める

偶数の個数を数えるためには、2で割った後の余りが「0」かを確認する必要があります。

そこで「Mod演算」を使用します。

使い方としては「出力=割る対象 Mod 割る数」のように使用します。

条件分岐

セルの値が偶数かどうかを判定するためには、条件分岐の文法を理解する必要があります。
VBAではIf…Then…Else文やSelect Case文などが使用されます。

変数の操作

偶数の個数を数えるために、カウンタ変数を用意し、条件が成り立つ場合にカウンタを増やしていく必要があります。
変数の宣言や操作方法を理解する必要があります。

まとめ

この課題では、VBAを使用してセル番地A1からA10までの偶数・奇数の個数を数えるプログラムを作成しました。

ループ構造や条件分岐、変数の操作などの基本的な概念を活用して、問題を解決しました。
VBAを使ったデータの処理や操作を行う際には、これらの基本的な知識が役立ちます。


VBAを使うことで、Excelの操作を自動化したり、複雑な計算や処理を行ったりすることができます。
練習問題を通じて、VBAのスキルを向上させ、より高度な操作や処理を行えるようになることを目指しましょう。

次の練習問題では、さらに別の課題に取り組んでいきますので、順番に解いていくことでスキルを磨いていきましょう。
以上で練習問題8となります。お疲れ様でした!