[[20200909101247]] 『複数シート間におけるデータ集計について』(たけし) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『複数シート間におけるデータ集計について』(たけし)

複数シートの数字を集計したいです。
大変お手数をおかけいたしますが
どなたかご教授のほどお願いいたします。

■Excelデータ例
<シート1>
商品名列 商品数列
A     3
B     5
C     9

<シート2>
商品名列 商品数列
A     3
A     5
B     7
B     2
B     6
C     9

■試したこと
SUMIFにてシート1に各シートの商品数列を追加し
やりたいことはできたのですが
行が数万件と膨大なデータのため動作が遅すぎて
実際に使うのは厳しかったです。

<完成図>
商品(A列) 商品数(B列)(シート1) 商品数(C列)(シート2) 
A     3           8
B     5           9
C     9           15

シート1(C2)=SUMIF('シート2'!$A:$A,$A2,'シート2'!$B:$B)

■検討していること
・ピボットテーブル
調べたところピボットテーブルがSUMIFより動作が早いとのことで
利用したいと考えています。
ピボットテーブルにて各シートをテーブル化してひとつのピボットテーブルを作成してみたのですが
一意の値がないためリレーションシップが組めずで<完成図>のような集計ができませんでした

・Access
ピボットテーブルと同様にリレーションシップが組めず集計ができませんでした

以上、よろしくお願いします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


 各シートの商品数の項目名を全て変えることができる(連番つけるとか)なら
 統合機能をお試しになってみてはどうでしょうか?
(コナミ) 2020/09/09(水) 11:18

Sub main()
    Dim c As Range
    For Each c In Sheets("Sheet1").Range("A:A").SpecialCells(2)
        c.Offset(, 2).Value = WorksheetFunction.SumIf(Sheets("Sheet2").Range("A:A"), c.Value, Sheets("Sheet2").Range("B:B"))
    Next c
End Sub
(mm) 2020/09/09(水) 14:55

>ピボットテーブルにて各シートをテーブル化してひとつのピボットテーブルを作成してみたのですが
>一意の値がないためリレーションシップが組めずで<完成図>のような集計ができませんでした

↑の意味がよくわかりませんが、
シート毎に商品数1、商品数2のように
フィールド名を変えておけば
↓の方法でできると思います。
https://www.crie.co.jp/chokotech/detail/205/

(マナ) 2020/09/09(水) 18:27


皆様ご教授ありがとうございました
VBA、ピボットともに試してみてやりたいことができました。
(たけし) 2020/09/11(金) 14:48

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.