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

【マクロVBA練習問題7】最小値の計算!セルの値を取得し、一番小さい値を計算してセルに表示する




練習問題と内容について

・練習問題の狙い

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

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

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

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

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

・練習問題7について

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

指定された範囲のセル値の最小値を計算し、セル番地に結果を表示する練習問題となります。 それでは頑張っていきましょう!

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

問題内容

セル番地A1からA5までの値の中から最小値を見つけ、その結果をセル番地G1に表示する 

動作説明

VBAを使用して、指定された範囲のセル番地A1からA5までの値の中から最小値を見つけ、その結果をセル番地G1に表示します。
最小値とは対象の数値を一番小さな値です。
この問題では、セル番地A1からA5までの値を取得し、その中から最小値を見つけてセル番地G1に表示する必要があります。

ヒント


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

・ヒントその1

セル番地A1からB3の値の最小値を求めるには、セルの値を取得してから最小値を計算し、結果をセル番地G1に表示する必要があります。
1つずつ比較してもいいですが、WorksheetFunctionオブジェクトのminメソッドを使用する方法があります。

WorksheetFunctionで最小値を求めるためには、VBAの組み込み関数であるWorksheetFunction.minを使用します。
例えば、min= WorksheetFunction.min(Range(“A1:B3“))というように、min関数を使ってセル範囲内の最小値を取得できます。

・ヒントその2

セルに値を最小値を見つけるためには、ループや条件分岐を使用することが有効です。
例えば、For Eachループを使用してセル番地A1からA5までの値を順番に比較します。

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

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

・ヒントその3

セルに値を表示するためには、Rangeオブジェクトを使用します。
セル番地を指定して該当するセルオブジェクトを取得し、Valueプロパティを使用して値を設定します。

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

・ヒントその4   (参考)

計算結果をセルに表示するには、Rangeオブジェクトを使用します。
セル番地を指定して該当するセルオブジェクトを取得し、Valueプロパティを使用して値を設定します。

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

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

 

解答コード

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

・回答その①

Sub Exercise7to1()
Dim minValue As Variant
Dim cell As Range

minValue = Range(“A1”).Value

For Each cell In Range(“A2:A5”)
If cell.Value < minValue Then
minValue = cell.Value
End If
Next cell

Range(“G1”).Value = minValue

End Sub

上記のコードは、セル番地A1からA5の値を比較し、最小値をもとめて、その結果をセル番地G1に表示するVBAのマクロです。
解答コードでは、`minValue `という変数を宣言し、セルの値を繰り返し処理で比較して最小値を計算しています。

最終的に、計算結果を`Range(“G1”).Value`に代入してセルに表示しています。
☟繰り返し処理の見本

Dim 変数名 AS 変数の型

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

‘処理

Next 変数名

 

・回答その②

Sub Exercise7to2()
Dim minValue As Double
Dim cell As Range

minValue = Application.WorksheetFunction.min(Range(“A1:A5”))
Range(“G1”).Value = minValue

End Sub

解答コードでは、まずminValue という変数を宣言し、WorksheetFunction.min関数を使ってセル範囲の合計値を取得します。

Application.WorksheetFunction.min(最小値を求めたい範囲)

取得した最小値を変数minValue に代入し、最後にRange(“G1”).Valueにその値を表示します。

 

必要な知識

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

最小値の計算方法

まず、最小値の仕組みを知っておく必要があります。
通常の最小値を計算する記事で詳しく解説していますので是非参考にしてみてください。

セルの値の取得と設定

セルの値を取得するには、Valueプロパティを使用します。
例えば、Range(“A1”).ValueやCells(1, 1).Valueはセルの値を取得します。

セルの値を設定するにも、同様にValueプロパティを使用します。
例えば、Range(“A1”).Value = 10やCells(1, 1).Value = “Hello”といった形でセルに値を設定します。 下記参考記事で紹介しています!

変数の宣言と演算

VBAでは、変数を宣言して使用します。変数はDimステートメントを使用して宣言します。
例えば、Dim minValue As Doubleとすると、minValue という名前の変数をDouble型で宣言します。

演算においては、四則演算や比較演算子を使用します。
例えば、minValue = minValue + 1とすると、minValue の値に1を加えて再代入します。

WorksheetFunctionの使用

積を求めるためには、WorksheetFunctionが必要です。 下記参考記事で紹介しています!

ループ構造

最小値を求めるために、セル範囲内の各セルを順番にチェックするループ構造が必要です。
For Nextループを使った反復処理や、For Eachを使ったカウンターを利用した反復処理について理解しておくと良いでしょう。

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

まとめ

この練習問題では、VBAを使用してセルの値の最小値を求める方法について学びました。

具体的には、セル番地A1からA5の値の最小値を計算し、その結果をセル番地G1に表示する問題を解きました。


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

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

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