各列の、最大値を抽出する。1番大きい数字を算出

こんにちは。伊川(@naonaoke)です。

今回は、各横列の最大値を1発で抽出したいと思います。

今回も競馬ネタなのですが、実務で利用することがあるかもしれません。

私の業務では、最大値を抽出することは、良くあります。

その場合は、Max関数を使いますが、関数では、私はやりたくありません。

なので、VBAを利用して、最大値を抽出します。

このブログはこんな人にお勧め

このブログはこんな人にお勧め
  • VBAを勉強している人
  • ループを理解できていない人
  • 配列を勉強している人

このブログを、読み終わるころには・・・・

ループを理解できるようになります。

ローカルウィンドウの利用方法を理解できるようになります。

若干、配列の理屈も理解できるようになります。


スポンサーリンク

最大値を抽出

この話は、Excelには、まったく関係ありませんが、競馬において、各競走馬を、スピード指数という数値を使って、各競走馬の能力を比較するという考え方があります。

そのスピード指数の一番大きい数字を抽出したいのです。

これを関数で実現するのもいいのですが、VBAの方が汎用性がありますので、VBAで実現します。

この記事を読む前に、下記の記事も併せて読んでいただけると、より理解が深まります。

各週ごとに、競走馬の頭数は異なります。

なので、Excelの縦列の最後、横列の最後を取得する技術が必須になります。

最大値を抽出 作業手順 その1 データベース確認


豆知識
適当にランダムな数値を発生させたい場合は、RANDBETWEEN関数が便利です。
使い方は、カンタンです。
=RANDBETWEEN(50,250)
とセルに入力すると、50~250までの数字をExcelが、勝手に入力してくれます。

セルA1~セルH18まで、ランダムな数字が入力されています。

各横列の最大値をI列に表示させます。

最大値を抽出 作業手順 その2 利用する変数

変数iは、ループに利用する変数です。

変数maxRは、縦列の最後のセル番号を取得します。

変数maxCが、横列の最後のセル番号を取得します。

変数myArrayは、配列を可能する変数です。配列を格納する場合は、Variant型を宣言する方が、失敗がないです。


これが各列の最終値を取得する書き方です。

これは公式として覚えてください。

なかなか、NETで調べても、HITしないのが、現状です。

この2つのコードを利用すると、下図のようになります。


このようにして、Excelの端を指定することが出来ます。

非常に重要な考え方なので、ぜひ、スキルにしてください。

最大値を抽出 作業手順 その3 ループを設定する

上の図のように記載します。

ループに関しては、下記の記事を参照してください。

myArray = Range(Cells(i, 1), Cells(i, maxC))

myArrayに配列を格納しています。

このRangeとcellsを利用して、セルの範囲の指定も、本当に重要です。

基本書等では、あまり説明されていませんが、基本中の基本なので、知識が怪しい人は、下記の記事を参考にしてください。

最大値を抽出 作業手順 その4 ローカルウィンドウで確認する

イミディエイトウィンドウや、ローカルウィンドウどの各種機能が、VBEの画面があります。

初心者のころは、どのように利用するかわからないと思います。

初心者あるある

配列を指定したけど、本当の格納されているのかわからない

そんなときは、下図のようにコードの途中にStopと入力しましょう。

今回は、必ずループの中に記載してください。


中断させることによって、今記載したコードが、どのような状態になっているのかを、ローカルウィンドウで確認できます。

エラーが表示されなければ、そのコードは正しく動いています。


myArray(1)には、横列の一番先頭が格納されているのがわかります。

最大値を抽出 作業手順 その5 VBAで、ワークシート関数を利用する。


このように記載します。


今回の変数iを使って、セルに表現をします。

ループで利用した変数を使わないと、セルに最大値を取得することが出来ません。

変数を自在に操作する


上の図の書き方ですが、これも非常に重要です。


つまり、9番目に書き出せと記載しているのです。

このコードも、私は、初心者のころは、理解できませんでした。

しかし、理解した時は、本当に感動しました。


最大値が抽出されました。

完成のコード


ここがポイント

ここがポイント
Function8.png
今回は、ローカルウィンドウの使い方も併せて説明しました。自分の記載したコードがどのように格納されているか、変数がどのような値を取得しているのかを、可視化できれば、難しくありません。各変数、配列が、どのような状態になっているのかローカルウィンドウで必ず確認する癖をつけましょう。そうすれは、配列や、ループも意外にカンタンかもしれません。

動画とブログでわかりやすくExcelとACCESSを紹介しています

まとめ

今回は、配列を利用したカンタンなコードを紹介しました。

本記事のデータベースを見て、これは、配列を利用した方がカンタンと思った人は、スキルアップしていると思います。

競馬ネタなのですが、きっと実務でも利用する機会はあると思います。

実務で利用しなくても、今回のコードは、ループ、配列を利用した一番カンタンなコードです。

壁にぶつかったら、参考にしてみてください。

最後まで、読んでいただきありがとうございました。

今回のサンプルファイルは、No178です。

サンプルファイルを購入希望の方はココをクリック
サンプルファイルの購入
ブログが動画で紹介した内容のサンプルファイルを購入できます。
月額3,000円です。
練習用ファイルもダウンロードできます。
PayPal経由でお支払いでます。
ダウンロード回数に制限はありません。
スポンサーリンク

Twitterでフォローしよう

おすすめの記事