Range("B14") .Value = "= DSUM(B3:G10 ,G3 ,A2:A3)"
' ワークシート関数は = から始まるので記入を忘れてはいけない。
Range("B15") .Value = " = IF(B14 > 0 ,B14," "
" " ) "
' B14が0なら空白にすると言う関数は、" " " " の様に [ " ]
を4つ入れる必要がある。
' どんな関数でも、空白を指す場合はこれを忘れないようにしないと、思うように関数
' 入力ができない。
B15に記入する関数は、= IF(B14 > 0 ,B14 ," ") である。
これは、B14が 0 ならB15を空白にする、と言うものである。
関数では、B14が0より大きい場合は、その数値をB15に表示し、B14が0の場合にはB15を空白にする、
となる。
VBAのプログラム
1. B14セルにDSUM関数をVBAで記入して、A3にコードを入力すれば結果が表示される様にしたい。
B14に記入する関数は、=DSUM(B3:G10,G3,A2:A3) である。
尚、コード120はデータが無い状態である。
2. B15セルにB14セルを見て、その結果を表示する。
Sub WorkSheet関数( )
Dim rangeD As Range ' rangeD は Set で使用して範囲を示すから Rangeになる。
Dim N As Single ' 合計金額等は桁が大きくなるからIntegerではいけない。
Dim Cod As Integer
Dim i2 As Integer
Dim i As Integer
Range("H3:J12") .ClearContents ' H3からJ12の範囲を文字だけ消去する。
Range("A3") .ClearContents
Cod = " " ' これは、Cod変数のコードと、取得したコードを比較する
' ので、最初は無しにしている。
i2 = 8 ' i2は、コード集計の合計を書く列位置で初期値は8列目で
' ある。
For i = 4 To 10
If Range("D" & i) = Cod Then GoTo Jump
' D列の取得位置のコードとすでにCodにあるコード番号を
' 比較して、同じなら、その行の金額を取得する必要が無い
' ので、Next へジャンプさせている。
Cod = Range("D" & i ) ' D列のコードを取得してCodに代入する。
Range("A3") .Value = Cod ' 取得したコードをDSUMの条件に記入する。
Set rangeD = Worksheets("Sheet1") .Range("A2:A3")
' Set は RangeD変数にA2からA3の範囲を代入する。
' 変数に範囲やセル位置を代入する場合は、このように
' Set を使用する。又、Set で代入した変数はプログラムの
' 終わりに Set rangeD = Nothing を記入しなければ
' Excel の終了まで定義されたままになる。
N = WorksheetFunction .DSum(Range("B3:G10") ,"金額"
,rangeD)
' ワークシート関数は、この構文で記入する。
' WorksheetFunction.まで入力するとDSumの位置に関数の
' 候補が表示される。
Cells(3 ,i2) .Value = Cod ' 3行目の i2 列にCodの値を記入する。
Cells(i ,i2) .Value = N ' i 行目の i2 列にNの値を記入する。
i2=i2+1 ' i2に1を加算して、記入する列が右に移動する。
Jump:
Next ' 折り返し点、Forに戻る。
Set rangeD = Nothing ' rangeD変数を開放する。
End Sub
● VBAからセルにワークシート関数を記入する。
上の表が、集計結果である。
1. 実行動作は、D列の4行目のコードを取得して、A3に記入する。
2. ワークシート関数を使用して、そのコードの合計金額をH列からJ列に記入して行く。
3. それぞれのコードは、別の列に書いている。
上の様な仕入データ表がある場合に、仕入先コード別に、仕入金額の一か月分を集計する様な場合、
ワークシート関数のDSUMが良い。だが、VBAにはその関数はないので、ワークシート関数を使用する
但し、DSUMの規制上このような表になる。DSUMは抽出条件をA2:A3の様に書かなくてはならない。
A3に抽出コードを書く。
DSUMの構文は、= DSUM(B3:G10,"金額",A2:A3) である。
VBAでワークシート関数を使用して、表内の集計等をする場合の構文を解説します。
基本的なマクロの習得
ワークシート関数の使用とセルに記入する
実際に使っているシステムの内容で解説
EXCEL VBA 講座