サイトアイコン 独学エクセル塾

【マクロVBA練習問題18】数式の判別・判定!数式が含まれているセルの個数をカウントする




練習問題と内容について

・練習問題の狙い

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

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

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

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

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

・練習問題18について

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

指定されたセルのうち、数式が含まれているセルの個数を表示する練習問題となります。

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

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

問題内容

セル番地A1からA10までのセルのうち、数式が含まれているセルの個数を表示する。

動作説明

VBAを使用して、指定されたセル範囲内に含まれる数式を検出し、その数をカウントして表示します。

この問題では、セル番地A1からA10までのセルのうち、数式が含まれているセルの個数を求める必要があります。

ヒント


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

・ヒントその1

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

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

・ヒントその2

セルの数式を判定するためには、RangeオブジェクトのHasFormulaプロパティを使用します。

数式が含まれている場合、Formulaプロパティはその数式を返します。

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

If 対象のセル.HasFormula Then
 ’数式だった場合の処理
End If

・ヒントその3

ループを使用してセルを一つずつ調べ、数式が含まれているセルをカウントします。

カウンター変数を使い、数式が含まれているセルが見つかるたびにカウントアップします。

 

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

 

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

 

解答コード

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

・回答その①

Sub Exercise18to1()
Dim cell As Range
Dim formulaCount As Integer

formulaCount = 0

For Each cell In Range(“A1:A10”)
If cell .HasFormula Then
formulaCount = formulaCount + 1
End If
Next cell

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

上記のコードは、セル番地A1からA10までのセルのうち、数式が含まれているセルの個数を表示するVBAのマクロです。

この解答コードでは、ループを使用して指定されたセル範囲内の各セルを調べ、
HasFormulaプロパティを使用して数式が含まれているかどうかを判定しています。

数式が含まれている場合、formulaCount 変数をカウントアップします。

最後に、C2に数式が含まれるセルの個数を表示します。

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

A1からA10のうち、数式は「4つ」あることがわかりました。
A2.A3.A6.A7で数式を使用しているので上手く機能していますね。

・回答その②

Sub Exercise18to2()
Dim formulaCount As Integer
Dim i As Integer

formulaCount = 0

For i = 1 To 10
If Cells(i, 1).HasFormula Then
formulaCount = formulaCount + 1
End If
Next i

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

上記のコードでは、Cells関数を使用してセルの範囲を指定し、HasFormulaプロパティを使用して数式の有無を判定しています。

ループを使用してセルを一つずつ調べ、数式が含まれている場合には、formulaCount変数をカウントアッップします。

回答その①と異なる点はループの方法です。
先ほどは「For Eachループ」を使用しましたが、今回は「For Nextループ」を使用しています。

 

 

必要な知識

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

ループ構造

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

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

HasFormulaプロパティ

セルが数式を持っているかどうかを判定するために、HasFormulaプロパティを使用します。

セルのHasFormulaプロパティは、セルが数式を持っている場合にTrueを返します。

まとめ

この練習問題では、VBAを使用してセル番地A1からA10までのセルのうち、数式が含まれているセルの個数を求める方法について学びました。

具体的には、Rangeオブジェクトとループ構造を組み合わせて、セルの範囲内に数式が含まれているかどうかを判定し、
数式が含まれているセルの個数をカウントしました。

VBAを使うことで、Excelの操作をより効率的に行うことができます。

この練習問題を通じて、ループ構造やRangeオブジェクトの使用方法を習得し、さらに応用的な操作や処理にも挑戦していきましょう。

次の練習問題では、さらに複雑なVBAの使用例に取り組んでいきますので、順番に解いていくことでスキルを向上させていきましょう。

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

モバイルバージョンを終了