【マクロVBA練習問題17】指定・対象の文字・数値を含んでいるか、確認しカウントする方法

検索・置換




練習問題と内容について

・練習問題の狙い

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

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

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

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

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

・練習問題17について

こちらはマクロVBAの知識で少し発展した課題になります。

指定されたセルのうち、対象の文字を含んでいるセルの数を表示する練習問題となります。

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

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

問題内容

セル番地A1からA10までのセルのうち、「A」の文字が含まれているセルの個数を表示する

動作説明

VBAを使用して、セル番地A1からA10までのセルのなかで、セル内の文字列に「A」が含まれているかどうかを確認します。

含まれている場合はカウントし、最終的な結果として含まれているセルの個数を表示します。

ヒント


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

・ヒントその1

セルに値を表示するためには、Rangeオブジェクトを使用します。
セル番地を指定して該当するセルオブジェクトを取得し、計算する必要があります。

セル範囲を指定するには、Range(“D1:D5”)というように範囲の開始セルと終了セルを指定します

・ヒントその2

セルを順次、確認するためには、ループ構造を使用します。
For文を使って、A1からA10までのセルを順番に処理します。

・ヒントその3

文字列内に特定の文字が含まれているかどうかを確認するためには、InStr関数を使用します。

構文は下記の通りです。

InStr([検索開始位置],検索対象,検索文字・数値,[検索の種類])

例えば、InStr(1, “ABC“, “A“)は文字列「ABC」内に「A」が含まれているかを調べることができます。

 

以上のヒントを参考に課題に取り組んでみてください!

 

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

 

解答コード

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

・回答その①

Sub Exercise17to1()
Dim count As Integer
count = 0

For i = 1 To 10
If InStr(1, Cells(i, 1).Value, “A”) > 0 Then
count = count + 1
End If
Next i

Range(“C2”).Value = count
End Sub

上記のコードは、セル番地A1からA10までのセルを走査し、「A」の文字が含まれているセルの個数を表示するVBAのマクロです。

解答コードの解説
1. count変数を宣言し、0で初期化します。この変数は含まれているセルの個数をカウントします。
2. Forループを使用して、A1からA10までのセルを順番に処理します。
3. InStr関数を使用して、セル内の文字列に「A」が含まれているかどうかを確認します。
  InStr関数は、対象の文字列内に指定した文字が含まれている場合はその位置を返し、含まれていない場合は0を返します。
4. もしセル内に「A」が含まれている場合、count変数をインクリメントします。
5. ループの終了後、C2にセルの個数を表示します。

それでは実行してみましょう。
結果はこのようになります。

A1からA10で「A」の文字を含むセルの数は「3セル」ということがわかりました。

・回答その②

Sub Exercise17to2()
Dim count As Integer
count = 0

For Each cell In Range(“A1:A10”)
If InStr(1, cell.Value, “A”) > 0 Then
count = count + 1
End If
Next cell

Range(“C2”).Value = count
End Sub

 

上記のコードでは、For Each文を使用してセル範囲A1からA10までの各セルを順番に処理しています。

それぞれのセルの値に対して、InStr関数を使用して「A」の文字の存在を確認し、含まれている場合はカウントします。
最終的な結果として、含まれているセルの個数をC2に表示します。

 

 

必要な知識

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

ループ構造

練習問題で使用した繰り返し処理を行うためにはループ構造が必要です。
For Nextループを使った反復処理や、Forループを使ったカウンターを利用した反復処理について理解しておくと良いでしょう。

これらの知識を応用して、問題を解くためのコードを作成しましょう。  

文字列の検索

文字列内に特定の文字や文字列が含まれているかどうかを確認するためには、InStr関数を使用します。

InStr関数は、検索対象の文字列内で指定した文字や文字列が最初に出現する位置を返します。
もし見つからない場合は0を返します。

使用方法は下記の通りです。

InStr([検索開始位置],検索対象,検索文字・数値,[検索の種類])
詳しい説明は下記記事を参照してください。

まとめ

この練習問題では、VBAを使用してExcelの操作を行いました。具体的には、セルに値を入力したり、セル範囲を走査したりする問題を解きました。

練習問題17では、セル番地A1からA10までのセルのうち、「A」の文字が含まれているセルの個数を表示することを目標としました。

解答コードでは、ForループやFor Eachループを使用してセルを走査し、InStr関数を使って文字列内に「A」が含まれているかを判定しました。

必要な知識として、ループ構造の理解やセルの値の取得方法、文字列の検索方法が重要でした。
これらの知識を活用することで、Excelの操作を効率的に行うことができます。

練習問題を通じて、VBAの基本的な構文や関数の使い方を練習することができました。
続く問題では、さらに応用的な操作や複雑な問題に挑戦してみることができます。

 

以上が練習問題17となります。お疲れ様でした!