Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【VBAスタンダードに挑戦!】ワークシート関数(COUNTIF/SUMIF関数)

【VBAスタンダードに挑戦!】

f:id:tuna-kichi:20200614200940p:plain

 

本日の5分勉強の内容

 

 

********************************************************

ワークシート関数

・ワークシートで使用している関数をマクロでも使用できる

・WorksheetFunction. 関数名 (引数)

・引数はワークシートで使用するとき と同じように指定する

・記述方法は VBA のルールに従う
 例) A1 (ワークシート) vs Range("A1") (VBA)

・ワークシート関数では呼び出せない関数もある
 例えば、セルの中で使用する If 関数は、マクロでは使えない
 (同じ書き方で使えない)

・使用できる関数はヘルプで確認するか、
 WorksheetFunction. (ドッドまで)を記述すれば、
 候補が表示されるので、そこで確認する

 f:id:tuna-kichi:20200808171740p:plain

 

COUNTIF 関数

・指定した範囲に、指定したデータが何個あるか数える

・データが存在するか どうかをチェックすることにも使える

・CountIf(検索範囲, 検索条件)

f:id:tuna-kichi:20200809160240p:plain

Range("G2")=WorksheetFunction.CountIf(Range("A2:A9"), Range("E2"))
 赤枠の範囲に「B」(緑)と同じデータが存在したら、その個数を足し算して、
 セルG2(ピンク)に合計を入力する

 ・ID「T」(黄色)の個数は「0」なので、存在しないと判断できる

 

SUMIF関数

・指定した範囲に、指定したデータと同じ行にある「数値」を合計する

・SumIf(検索範囲, 検索条件, 合計範囲)

f:id:tuna-kichi:20200809154633p:plain

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 関数は便利そうだけど、今の業務では数値を扱うことは少ないので、

すぐには使えそうにないです。

 

フィルタリングして、フィルタリングされたセルを選択して、

下の所に表示されるのを見るだけで用は足りるかな。 

f:id:tuna-kichi:20200809162150p:plain

 

 

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/