目次
変数ってなんだ?2
こんにちは。伊川(@naonaoke)です。
上の記事で、変数とは何かということを簡単に説明しました。
今回は実際のコードを使って説明します。
問題提起
(株)IKAWAの阿久 世子男(アク セスオ)は新人研修で下記のような質問を受けました。
変数の説明を受けたが、イマイチ実感がないと質問がありました。
どのようなコードで説明をすれば理解されるだろうか?
解決策
具体的なコードで説明して、理解してもらう。
変数で一番迷うことは、変数に次々代入していくこと
変数を利用していると、A=A+1のよう数式をよく見かけます。
これは、数学で考えると、わからなくなります。
AとA+1がなぜ等しいのかわからなくなるからです。
しかし、A=A+1はプログラムでは、当たり前のことです。
このような理屈を中学校でも、ぜひ教えてほしいものです。
Aという変数に次々、伊川直助を代入していくので、A+1というような表現を使います。
カウンターで、カチ、カチ、カチと1個、1個カウントするイメージです。
変数に1個、1個足すのは面倒
1個、1個加算するのは、面倒です。
だから、Excelには、COUNTIF関数、SUIMIF関数があるのです。
便利になったとしても、コンピュータの原則をわすれてはいけません。
昔ながらのやり方でCOUNTIFをVBAで実行する データベースを確認
セルD2には、COUNTIF関数を仕込んでいます。
セルE2には、SUMIF関数が仕込んでいます。
セルA2~セルA25には、伊川直助は、4回登場して、伊川直助の合計は44の合計です。
変数を使ってVBAで同じ結果を出したいと思います。
変数 COUNTIFをA+1で実行する
Sub カウント() Dim i As Long, A As Long For i = 2 To 25 If Cells(i, 1).Value = Range("C2") Then A = A + 1 End If Next i Range("E2") = A End Sub
COUNTIF関数と同じ結果になりました。
変数 SUMIFをA+1で実行する
コードを書く
Sub 合計() Dim i As Long, A As Long For i = 2 To 25 If Cells(i, 1).Value = Range("C3") Then A = A + Cells(i, 2).Value End If Next i Range("E3") = A End Sub
SUMIF関数と同じ結果になりました。
ここがポイント
Worksheetfunctionは、ワークシート関数をVBAでも利用できる便利なものです。しかし、今回の、1個、1個カウントするという、A=A+1はコンピュータの原理原則です。変数の意味を理解した上で、worksheetfunctionを利用しましょう。
まとめ
新人は、変数を理解したのがわかりませんが、反応は、よかったようです。
今回のサンプルファイルは、No65です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。