【VBAスタンダードに挑戦!】
本日の5分勉強の内容
********************************************************
ワークシート関数
・ワークシートで使用している関数をマクロでも使用できる
・WorksheetFunction. 関数名 (引数)
・引数はワークシートで使用するとき と同じように指定する
・記述方法は VBA のルールに従う
例) A1 (ワークシート) vs Range("A1") (VBA)
・ワークシート関数では呼び出せない関数もある
例えば、セルの中で使用する If 関数は、マクロでは使えない
(同じ書き方で使えない)
・使用できる関数はヘルプで確認するか、
WorksheetFunction. (ドッドまで)を記述すれば、
候補が表示されるので、そこで確認する
COUNTIF 関数
・指定した範囲に、指定したデータが何個あるか数える
・データが存在するか どうかをチェックすることにも使える
・CountIf(検索範囲, 検索条件)
・Range("G2")=WorksheetFunction.CountIf(Range("A2:A9"), Range("E2"))
赤枠の範囲に「B」(緑)と同じデータが存在したら、その個数を足し算して、
セルG2(ピンク)に合計を入力する
・ID「T」(黄色)の個数は「0」なので、存在しないと判断できる
SUMIF関数
・指定した範囲に、指定したデータと同じ行にある「数値」を合計する
・SumIf(検索範囲, 検索条件, 合計範囲)
・Range("F2")=WSF. SumIf(Range("A2:A9"), Range("E2"), Range("C2:C9"))
※WSF = WorksheetFunction (長くなってしまったので)
赤枠の範囲に「B」(緑)と同じデータが存在したら、
赤枠の「B」と同じ行の列(青)の数値を足して、セルF2に合計を入力する
********************************************************
CountIf は、シート上でよく使います。
でも、シートが更新されるたびに計算しなおすので、
100行以上 CountIf 関数を入力したときは、
すぐに値貼り付けで、関数を削除してしまいます。
※セルに文字を入力して Enter キーを押したり、
Deleteキーが押されるとシートが更新されます。
なので、計算はマクロで実行して、
シートには結果だけ表示させるようにすれば、
Excel の動きが重くなることは避けられるはずです。
問題は、シート上で CountIF 関数を記述して、
値貼り付けする作業より便利で簡単で、
どんなファイルにも使用できるマクロが作れない・・・
SumIf 関数は便利そうだけど、今の業務では数値を扱うことは少ないので、
すぐには使えそうにないです。
フィルタリングして、フィルタリングされたセルを選択して、
下の所に表示されるのを見るだけで用は足りるかな。
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/