プロが教える店舗&オフィスのセキュリティ対策術

エクセルのVBAについて教えていただけませんでしょうか?

例えば、A列にランダムに売上日付、B列にその売上金額が記載されている表があるとします。

表の作り方を変更もしくはソート等他の方法を考えない場合、E列に各月の合計金額を

マクロを使って記載できるようにしたいと思っています。

For next構文及び月度毎にピックアップされた売上金額の合計方法など分からず。

マクロでの合計金額算出方法を教えて頂けませんでしょうか?

「エクセルのVBAについて教えていただけま」の質問画像

A 回答 (4件)

ピボットテーブルでできることをなんでマクロ?

    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
ピボットテーブルと言う方法はしりませんでした。
本日勉強してみます。

お礼日時:2017/07/10 07:01

こんにちは



>マクロでの合計金額算出方法を教えて頂けませんでしょうか?
もちろんマクロでも可能ですが、関数式でもできるのでそちらの回答を。


・A列の日付はシリアル値と仮定しています。
・B列の金額は数値で、\表記やカンマ区切りは書式設定で行っていると仮定します。
・D列の値は数値(4,5,6…)で、「月売上」は書式で設定していると仮定します。

E1に
 =IF(D1,SUMPRODUCT((MONTH(A$1:A$100)=D1)*B$1:B$100),"")
として、下方にフィルコピーではいかがでしょうか?

※ 範囲を100行までとして設定しています
※ 月のチェックのみで、年はチェックしていません
※ 上記の仮定と異なっていても可能ですが、関数式が変わります。
 例えば、D列が「4月売上」のような文字列の場合は、
 関数式の「=D1」の部分を「=LEFT(D1,LEN(D1)-3)+0」のように変えることで、同じ結果を得ることができます。
※ なお、エラー処理は省いています。
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
教えて頂いた関数で計算をしてみます。

お礼日時:2017/07/10 07:08

SUMPRODUCT関数でもできるよ。

    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
確かにsum productの関数でできそうです。本日やってみたいと思います。

お礼日時:2017/07/10 06:54

こんにちは!



他の方が回答されていらっしゃるように、わざわざVBAでやる必要性がないと思うのですが・・・

画像の配置だとD列のセルの表示形式をユーザー定義から
0月売上
としておき、4とか5の数値のみ入力しておきます。

E1セルに
=SUMPRODUCT((MONTH(A$1:A$1000)=D1)*B$1:B$1000)
という数式を入れフィルハンドルで下へコピー!
これで大丈夫だと思います。

どうしてもVBAで!という場合、一例です。

Sub Sample1()
Dim i As Long, c As Range
Range("E:E").ClearContents
For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row
Set c = Range("D:D").Find(what:=Month(Cells(i, "A")) & "月売上", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then '//←念のため//
With c.Offset(, 1)
.Value = .Value + Cells(i, "B")
End With
End If
Next i
End Sub

※ どちらも月だけしか考慮していませんので
複数年のデータがある場合、その月の合計が表示されます。m(_ _)m
    • good
    • 0
この回答へのお礼

ご連絡ありがとうございます。
どうしても、vbaで計算してみたいので、ご教授して頂いた内容で、本日やってみたいと思います。

お礼日時:2017/07/10 07:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!