見出し画像

【Excel VBA】同一グループに、条件付きで連番を振る

YouTubeでも紹介しています。是非ご覧ください。

連番をふるというのは、パソコンが行う単純作業で最もメジャーですよね。

しかし、なかなか、奥が深いです。

今回は条件付きで、連番を振ります。

同一グループに、条件付きで連番を振る


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

最近は、Excelばかりやっているので、Excelもやってみようと思います。

Excelで、同一グループに、条件付きで連番を振るというのは、どのようにするのか?

悩みました・・・・・・

ACCESSなら、カンタンできるのですが、Excelでは、やったことがありません。

関数を利用すればカンタンできるのですが、VBAでは、どうするのか?

WorkSheetFunctionならばできるだろうと安直な思いからやったのですが、なかなか厳しい過程となりました。

 

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


ExcelでVBAを勉強している人

VBAで連番を振りたい人

VBAでSUMPURODCT関数を利用したい人

 


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


WorkSheetFunctionを、関数のように利用できると思っていましたが、そうではありませんでした。

結構考えましたが、Excelでも型が一致しませんというエラーに嫌気がさしましたが、なんとか完成しました。

その過程を見てください。


SUMPURODCT関数をVBAで実行

 

今は、それほど利用されませんが、COUNTIFS関数が登場するまでは、私の会社では、よく利用していました。

 

配列の対応する要素間の積をまず計算し、さらにその和を返します。

ただし、SUMPRODUCT関数は数値以外の配列要素は、0であると見なされます。

SUMPRODUCT関数で複数条件の件数をカウントしたり、合計を出すことができます。

SUMPRODUCT関数を用いて、1行/1列おきに計算することもできます。

 

こんな関数です。

 

私の上席が、VLOOKUP関数、IF関数、SUMPRODUCT関数の大ファンでした。

月末になると、Excelが起動するのに、3分かかるという伝説のExcelでした。

 


SUMPURODCT関数をVBAで実行 作業手順 その1 ワークシート関数で実行


やりたいことは、レースID毎、かつ、単勝オッズの低い順に連番を振りたいのです。

 



このようになります。

 

SUMPURODCT関数をVBAで実行 作業手順 その2 VBAで実行



こんな感じでコードを書いてみました。



出た、ACCESSなら、いざ知らず、Excelもかよと思いました。

結論としては、このようなコードは、VBAでは利用できないということが、NET上の情報にありました。

結構、VBA SUMPURODCTで検索すると、HITしました。

 


SUMPURODCT関数をVBAで実行 作業手順 その3  evaluateを使う



Evaluate(エヴァンユエイト)を利用します。

Evaluateは、Excel VBAでのみ使えるVBAコード上からExcelの数式を実行するための関数です。

つまり、セルに入れる数式を文字列としてVBAで実行できます。

なんとなく、難しいそうですよね。


こんなコードになります。

個人的には、変数の書き方が難しいと思いました。

書き方は、=SUMPRODUCT(($A$2:$A$524=A2)*($D$2:$D$524<D2))+1 

上記の数式を観ながら記載すればいいと思います。

特に説明は、不要かと思います。

注意点は、標準モジュールではなく、シートモジュールに記載したほうがいいのではないかと思います。

SUMPURODCT関数をVBAで実行 作業手順 その4 他の手段



沢山あると思います。

しかし、なぜ、SUMPURODCT関数だけが、WorksheetFunctionで実行できないのか不思議でした。

これは、完璧な競馬ネタで、秋のG1が始まるのに、別のやり方を探すのが面倒でした。

だから、このような方法で実現をしました。

 

ここがポイント


Evaluate(エヴァンユエイト)なんて知りませんでした。

しかし、便利な関数ですよね。

数式を実行する関数があるなんて便利です。

ということは、Evaluate(エヴァンユエイト)の引数は、数式となりますね。

ここに、気付かないと、VBAの迷宮にはりますね。

 

 

まとめ



VBAも、知っているようで、知らないことが沢山あります。

知らないことがあると、カンタンにはまってしまいます。

日々、勉強ですね。

 

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

サンプルファイル

私のホームページでも販売しています。このようなファイルは、全部で、300ファイル前後ありますが、総ダウンロード数は、10,000件を、超えました。10,000件超えてから、面倒なので、カウントしていないです。

勉強したい方、会社の実務で利用したい方にお勧めです。

はっきり言いますが、ネットで調べる時間を考えたら、購入したほうが、時間の節約になります。

まして、ネットのコードは、作動するとは限りません。

料金は、200円です。

よろしくお願いします。

ここから先は

60字

¥ 200

よろしければサポートをお願いします。いただいたお金に関しては、書籍の購入に充て、より良い情報を皆様に提供します。