質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

3回答

1382閲覧

EXCEL VBAでテーブルのデータを複数条件で合計

pon108

総合スコア19

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2020/09/23 01:14

前提・実現したいこと

売り上げをまとめたEXCELファイルがあり、
データはTable化して蓄積してあります。(約3000件ほどのデータです)

現在は条件ごとにフィルターをかけて合計をしているのですが
このやり方では時間が膨大にかかり、間違えも多発してしまっています。

そこで自動化をしよう考えていますが、現在の方法だと10分ほど時間が掛かってしまいます。
他に何かいい案はないでしょうか。

Tableに入っているデータは下記の内容になります。

◆データ内容
・日付
・担当者
・地域
・商品名
・売上金額(午前)
・売上金額(午後)
・合計金額

合計条件は
・地域が「〇〇〇」、商品名が「〇〇〇」だった場合の金額。
⇒合計は「売上金額(午前)」「売上金額(午後)」「合計金額」の3パターン

発生している問題・エラーメッセージ

Tableのデータを複数条件で分けて合計する部分を「WorkSheetFunction.SUMIFS」を使用しているのですが
条件が多く、すごく時間が掛かってしまいます。

現在のコードを載せるべきなのでしょうが
会社情報が入っているため上記情報でなんとか対応していただけると助かります。

試したこと

配列にデータを格納してみたのですが、そこから条件に合ったデータを抽出して
合計する方法が分からず断念。
Dictionaryも調べてみたのですが、Keyに対してItemが一つしか格納できないようなので
断念。

説明下手で申し訳ありませんが、どうか宜しくお願い致します。

補足情報(FW/ツールのバージョンなど)

EXCEL2016を使用しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

投稿2020/09/23 12:32

TanakaHiroaki

総合スコア1063

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pon108

2020/09/23 23:42

回答ありがとうございます。 Dictionaryでは解決できないかと思っていましたが、教えていただいたサイトを参考に作成することが出来ました。 高速で処理が出来るようになり助かりました。 ありがとうございました。
guest

0

EXCEL VBAでSQL文を使って集計する
テーブル化されているなら本来は上記URLの方法が一番早いとは思うんですが

追記 SQLは基本こんな感じになります。
使われる際は[Sheet1$]の記載を変更して下さい

VBA

1sql = "SELECT" _ 2 & " 地域, 商品名, SUM(売上金額(午前)) AS 売上金額午前合計, SUM(売上金額(午前)) AS 売上金額午後合計, SUM(合計金額) AS 合計金額合計" _ 3 & " FROM [Sheet1$]" _ 4 & " GROUP BY 地域, 商品名" _ 5 & " ORDER BY 地域, 商品名"

投稿2020/09/23 03:07

編集2020/09/23 14:43
kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pon108

2020/09/23 23:40

回答ありがとうございます。 丁寧に説明頂きありがとうございます。 EXCELでSQLを使用出来るのは知りませんでした。 勉強になりました。 別の機会で活用させていただきます。
guest

0

こんにちは。

全く違うアプローチになりますが。。。

データをピボットテーブルにして、
・行に「地域」「商品名」
・列に「Σ値」
・Σ値に「合計/売上金額(午前)」「合計/売上金額(午後)」「合計/合計金額」
とすれば、集計できます。

これで事足りませんか?

投稿2020/09/23 01:55

kay-ws

総合スコア105

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pon108

2020/09/23 23:36

回答ありがとうございます。 確かにピボットでも出来ましたね。 そこまで考えられていませんでした。 次回からはもう少し考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問