
お世話になっております。
今回、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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【初月無料キャンペーン実施中】オンライン健康相談gooドクター
24時間365日いつでも医師に健康相談できる!詳しくはコチラ>>
-
SUMIFに変わる(代用)数式を教えてください
Windows 7
-
Excel関数,SUMIFの代わりになるもの
Excel(エクセル)
-
INDIRECT関数の代替方法は?
Excel(エクセル)
-
4
【Excel】 SUMPRODUCT関数の高速化
Excel(エクセル)
-
5
外部ファイルを開かず参照したい
Excel(エクセル)
-
6
Excelで重複データの件数ではなく、何番目かを求める方法
Excel(エクセル)
-
7
エクセルファイルのシート毎の容量
Excel(エクセル)
-
8
表から0以外の数値を取り出し羅列したい
Access(アクセス)
-
9
ShowAllDataのエラーを回避したい
Access(アクセス)
-
10
エクセル:一般的に何メガくらいの容量なら安全ですか?
PowerPoint(パワーポイント)
-
11
VBAで文字列を数値に変換したい
Excel(エクセル)
-
12
関数が“揮発性”か“不揮発性”かを知る方法は?
Excel(エクセル)
-
13
Excelで、条件と一致する最後のセルを検索したい
Excel(エクセル)
-
14
COUNTIFを使わずに・・・
Excel(エクセル)
-
15
リンク先のファイルを開かなくても、値が読み込めるようにできますか?(SUMIFSを使ってます)
Excel(エクセル)
-
16
エクセルVBA SUMIFSの高速化
Excel(エクセル)
-
17
Excelの関数 SUBSTITUTEとIF関数の組み合わせについて
Excel(エクセル)
-
18
開く、上書き保存 に掛かる時間が長いので短縮したい
Excel(エクセル)
-
19
Excelで表のデータを並び替えたら関数で参照するセルがずれてしまいますか?
Excel(エクセル)
-
20
SUMIFS関数とDSUM関数の違いについて。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
エクセルで2つの時系列のデー...
-
5
ブレーカー落ちで壊れたりしな...
-
6
AccessからExcelを編集
-
7
Android携帯をUSBメモリ代わりに
-
8
シーケンサにパソコンからアク...
-
9
send-recvで複数データの送受信
-
10
Accessで該当データにフラグを...
-
11
エクセルのVBA メッセージボッ...
-
12
携帯電話を水につけるとデータ...
-
13
VBAで「"」[']をエスケープする...
-
14
配列の勉強をしています。使用...
-
15
ノイズの入った波形をきれいな...
-
16
C# でDataTableの更新を高速化...
-
17
多量のSUMIF式を軽くしたい
-
18
Rubyで動的なグラフのGUIを作り...
-
19
GETはできるがPOSTができない、...
-
20
ポケコン PC-E650 の...
おすすめ情報
公式facebook
公式twitter