
お世話になっております。
今回、7000行~10000行程度のデータを集計するEXCELシートを作成しています。
元データは
取引先CD 社名 分類CD 分類名 売上 粗利 在庫
001 A社 001 A 1200 120 1440
001 A社 002 B 1000 100 1200
001 A社 003 C 2000 200 2400
001 A社 004 D 300 30 360
001 A社 005 E 1500 150 1800
001 A社 006 F 200 20 240
002 B社 002 B 5000 500 6000
002 B社 004 D 10 1 12
003 C社 006 F 2200 220 2640
005 E社 005 E 100 10 120
のように会社別・分類別の売上・利益・在庫データです。
通常であれば、集計表を作るにはSUMIF関数で十分なのですが、
実際のデータは数千行あり、また項目ももっと多岐にわたるため、
再計算に時間がかかってしまいます。
(Celeron1.2Ghz、メモリ512MB位のノートPCで再計算に2~3分要します)
SUMIF以外の方法で処理を軽くすることはできないでしょうか。
VBAを使って軽くなるのであればVBAでもかまいません。
ちなみに元データをいじることはできません。
(定型でシステムから出力されるデータであるため)
申し訳ありませんが、ご教示いただければ助かります。
No.3ベストアンサー
- 回答日時:
No1です。
もしデータが取引先CD 或いは 社名順ならば
=SUM(INDEX(E:E,MATCH("001",A:A)):INDEX(E:E,MATCH("001",A:A,FALSE)))
といった関数が使えます。
SUM関数ですが範囲をMACTH関数で指定するものです。
MATCH関数で、最後にFALSEを指定するかしないかで、最初の行と最後の行が指定できます。
昇順に並んでいる事が条件です。SUMIF関数とは違って配列を使用しないので、非常に軽くなります。
具体的な解決策をありがとうございます!
元データを貼り付ける手順をVBAで組んでいますので、
その時に取引先CD順にソートするようにしてみます。
ぜひ試してみたいと思います。
ありがとうございます!
No.5
- 回答日時:
こんばんは。
数千行程度で、そんなに遅くなるはずはないので、何か別の要因があるような気がしますが、もともと、そのようなために、データベース関数が昔作られました。データベース関数は、計算データの取得の仕方が違いますから、列をフルに使っても大丈夫なように作られています。ただ、使い方の細かな説明が、Microsoft サポートだけにしか出ていないような気がします。
なお、配列数式では、SUMIFよりは遅いはずです。
お恥ずかしい話、データベース関数は今まで使ったことがありません。
DSUMなどを試してみたいと思います。
ありがとうございます。
No.4
- 回答日時:
こういう
データが多量
仕事関係(即時性が要求される)
正確が要求される課題(関数、VBAは自作すると、データが多い場合、なかなかほぼ間違いないとはいえないものだ)
などの場合は、出来るなら、専用にプログラムが組まれている
ピボットテーブルを使うべきです。
たとえれば「カンナとのみ」(関数)と木工機械(特別ツール)とぐらいの差があると思います。道具を選ばないと。
ーー
VBAなら
会社+分類別にソートし(どれぐらい時間がかかるかな?)たら、他に、初めから終わりまで1通り読む時間で集計できます。
ロジックとしては、バッチ処理の定石なんですが、ここにコードを書くことは、課題丸投げのコードを作ってくださいに応じることになるので、省略します。
おっしゃる通り、道具は選ぶべきですが、
現状の使い方を考えると関数で組むことがベストかと思いました。
VBAで集計処理を入れることも検討してみたいと思います。
まだまだVBAは勉強中なので、今後の課題とさせていただきます。
ご回答ありがとうございました。
No.2
- 回答日時:
>会社別・分類別の売上・利益・在庫データです。
>通常であれば、集計表を作るにはSUMIF関数で十分なのですが、
>実際のデータは数千行あり、また項目ももっと多岐にわたるため
どのように集計しているのでしょう?
どのような式になっているのでしょう?
(SUMIF関数で出来ているのかな)
現状がわからないので
>SUMIF以外の方法で処理を軽くすることはできないでしょうか。
についての回答もしづらいですね
説明が悪くて申し訳ありません。
実際には元データは2シートあります。
当年と前年のデータです。
これらを合わせて複数のシートに集計したいのです。
シートは会社別となっており、
縦に分類、横に売上・粗利・在庫 がそれぞれ当年・前年と来る形です。
集計にはすべてSUMIFを使っておりますが、
1つのシートに1,000個以上のSUMIF関数が入っており、
さらにこのシートが会社別に複数あると、
すさまじい量の計算になります。
これを少しでも早くしたいのですが、
なにか良い方法はないでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 会計ソフト・業務用ソフト Excelで売上げデータの中の任意の商品の合計を出したい 3 2023/01/18 18:19
- Excel(エクセル) エクセルで年月ごとの売り上げを集計する方法を教えてください 7 2022/06/01 17:06
- その他(Microsoft Office) ピボットテーブルへの集計フィールド挿入 1 2023/02/26 11:33
- Visual Basic(VBA) VBA 毎日取得するデータを順番に反映していく方法 6 2023/08/26 16:22
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。 6 2023/06/25 11:37
- その他(IT・Webサービス) 高速処理可能な表計算ソフトについて ExcelやGoogleスプレッドシートのような表計算ソフトで、 2 2023/04/29 16:06
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- 中途・キャリア 契約社員で在職中ですが、正社員目指して転職活動中です。 20代半ばの男です。 2社から内定を頂きまし 5 2022/04/29 13:39
このQ&Aを見た人はこんなQ&Aも見ています
-
SUMIFに変わる(代用)数式を教えてください
Windows 7
-
Excel関数,SUMIFの代わりになるもの
Excel(エクセル)
-
特定のシートのみ再計算させない方法は?
Excel(エクセル)
-
-
4
【Excel】 SUMPRODUCT関数の高速化
Excel(エクセル)
-
5
Countifよりも早く重複数をカウントする方法ありますか?
Excel(エクセル)
-
6
2003にSUMIFSがなくて困っています。
Excel(エクセル)
-
7
関数が“揮発性”か“不揮発性”かを知る方法は?
Excel(エクセル)
-
8
外部ファイルを開かず参照したい
Excel(エクセル)
-
9
リンク先のファイルを開かなくても、値が読み込めるようにできますか?(SUMIFSを使ってます)
Excel(エクセル)
-
10
INDIRECT関数の代替方法は?
Excel(エクセル)
-
11
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
12
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
13
SUMIF関数で、「ブランク以外を合計」を指定したい
その他(Microsoft Office)
-
14
Excel MATCH関数で検索範囲内に同じ値の検索値が複数ある場合
Access(アクセス)
-
15
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
16
SUMIFS関数で「計算式による空白以外」を条件に指定したい
その他(Microsoft Office)
-
17
関数の入れすぎで重い
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<VB>String→Object
-
教えて下さい
-
アクセス2000で画像データ...
-
多量のSUMIF式を軽くしたい
-
GETとPOSTの違い
-
2,3度連続して入る同データ...
-
C# ソケット通信でデータ受信時...
-
配列でデータが入っている要素...
-
二分探索の平均探索回数
-
メモ帳(テキストデータ)をExc...
-
ユーザーフォームのテキストボ...
-
PIC12F675 キャリブレーション...
-
可変行における変動するコピー...
-
Excellで並べ替えについて(記号...
-
MSCommを用いたRS-232-Cデータ転送
-
[C言語] コメント文字列を無視...
-
エクセルで2つの時系列のデー...
-
VisualC++でRS232C経由のデータ...
-
LoadPictureしたイメージデータ...
-
クッキーの値のエンコード/デコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
【エクセル】測定時間がバラバ...
-
多量のSUMIF式を軽くしたい
-
配列でデータが入っている要素...
-
メモ帳(テキストデータ)をExc...
-
ユーザーフォームのテキストボ...
-
特定のデータの抽出方法を教え...
-
二分探索の平均探索回数
-
EXCELVBAでSQLserverからデータ...
-
Accessで該当データにフラグを...
-
VBA 空白セルを削除ではない方...
-
この行は既に別のテーブルに属...
-
Excel VBAでのオートフィルター...
-
[C言語] コメント文字列を無視...
-
エクセルで2つの時系列のデー...
-
アクセス2000で画像データ...
-
CString型の文字列連結について
-
カンマからスラッシュに
-
VBにおいてフォーム間の変数の...
-
<VB>String→Object
おすすめ情報