Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2016)
データの抽出集計
投稿日時: 21/04/01 19:52:27
投稿者: nob1122

ア表のデータをイ表に抽出したいです。シートを分けて設定したいです。
 
ア表
  A    B   C
1 リンゴ  4/1 100
2 みかん  4/2 200
3 リンゴ  4/2 200
4 なし   4/3 300
 
イ表(リンゴ)
  A  B  
1 4/1 100
2 4/2 200
 
上記のように、ア表のA列のデータごとに集計したいのです。
 
よろしくお願いします。
 

回答
投稿日時: 21/04/01 23:31:36
投稿者: WinArrow
投稿者のウェブサイトに移動

A列が商品名
B列が日付
C列が数量
として、
商品ごとの日付毎の数量を集計すると考えてよいですか?
イシートのA列には、日付が入力されていると考えて
 
イシートのB2に
=SUMPRODUCT((ア!$A$2:$A$5="リンゴ")*(ア!$B$2:$B$5=A2)*(ア!$C$2:$C$5))
 
1行目は項目名を想定しています。
 

投稿日時: 21/04/01 23:56:02
投稿者: nob1122

早速の回答、ありがとうございます。
 
少し、説明不足でした。
 
処理したいことは、ア表のA列にリンゴとある行のデータを順番にイ表に抽出することだけを想定します。
 
日付は、毎日連続してあるとは限りません。
 
よろしくお願いします。

投稿日時: 21/04/02 00:13:05
投稿者: nob1122

追記します。
 
ア表A列のリンゴとある行のB列、C列のデータをそのまま、イ表に抽出して、並べたいです。

回答
投稿日時: 21/04/02 07:47:46
投稿者: んなっと

    A   B   C
1  商品 日付 金額
2 リンゴ  4/1  100
3 みかん  4/2  200
4 リンゴ  4/2  200
5  なし  4/3  300
 
 上のように見出し行を追加
→表のどこかを選択した状態で
→データ
→テーブルまたは範囲から
 (PowerQueryのウインドウに切り替わります)
→日付のデータ型を 日付/時刻 から 日付に変更
→閉じて読み込む
 (これで新しいシートができます)
→テーブルデザイン
→スライサーの挿入
→商品にチェックを入れてOK
→リンゴをクリック
→新しくできた現在のシートをコピー
→みかんをクリック

回答
投稿日時: 21/04/02 07:50:32
投稿者: んなっと

元データが増加したら
 データ
→すべて更新

回答
投稿日時: 21/04/02 07:55:17
投稿者: WinArrow
投稿者のウェブサイトに移動

>質問タイトルにも、説明文の中にも、
>集計
とういう言葉があったので、
目的が、集計にあると判断していました。
 
抽出だけならば、
幾つかの方法があります。
(1)オートフィルタを使う方法
 「リンゴ」で抽出したデータをコピペすると、目視で確認できます。
  もちろん、「リンゴ」以外でも使えます。
 
(2)フィルタオプションを使う方法
  抽出を指定する項目のセルが必要です。
  考え方は、オートフィルタを同じですが、抽出したデータをコピペする操作が不要になります。
 
(3)なが〜い数式を駆使する方法
 この数式は、結構面倒なので書略します。
 メンテナンスを考慮した場合、数式の意味を理解する必要があります。
 
※並べ替えは、別途手操作で・・・・
 
抽出を並べ替えを1回の操作で・・・と希望するならば、マクロで対応することになります。

回答
投稿日時: 21/04/02 11:12:16
投稿者: Suzu

・項目名(品名・日付・値・・・)を入れても良く
・1回だけの処理
なのであれば、ピボットテーブルを使用する方法もあります。
 
行に、品名
値に、値
 を指定し、ピボットテーブルを作成。
 
各品名毎の合計値の部分をダブルクリックすれば
当該品名の詳細データが別シートとして作成されます。

回答
投稿日時: 21/04/02 11:26:26
投稿者: んなっと

数式の場合。自動的に更新されるので便利です。
元データがあるのがSheet1だとします。
 
Sheet1
 
    A  B  C
1 リンゴ 4/1 100
2 みかん 4/2 200
3 リンゴ 4/2 200
4  なし 4/3 300
 
 
別シートのA1にリンゴ
 
    A  B
1 リンゴ   
2   4/1 100
3   4/2 200
 
Filter関数が使える環境の場合
A2
=FILTER(Sheet1!B:C,Sheet1!$A:$A=$A$1,"")
A列を日付に
 
使えない環境の場合[データ数が多いと重くなります]
A2
=IFERROR(INDEX(Sheet1!B:B,AGGREGATE(15,6,ROW($1:$500)/(Sheet1!$A$1:$A$500=$A$1),ROW(A1))),"")
 
 
【参考】作業列を使ってもいいなら
 
Sheet1
 
    A  B  C     D
1 リンゴ 4/1 100 リンゴ|1
2 みかん 4/2 200 みかん|1
3 リンゴ 4/2 200 リンゴ|2
4  なし 4/3 300  なし|1
 
D1
=IF(A1="","",A1&"|"&COUNTIF(A$1:A1,A1))
下方向・↓
 
別シート
 
    A  B
1 リンゴ   
2   4/1 100
3   4/2 200
 
A2
=IFERROR(INDEX(Sheet1!B:B,MATCH($A$1&"|"&ROW(A1),Sheet1!$D:$D,0)),"")

投稿日時: 21/04/02 11:57:48
投稿者: nob1122

回答いただいた方々、ありがとうございました。
 
今回、FILTER関数の存在を知りましたが、残念ながら、使えませんでした。
 
皆さんのアドバイスのおかげで、抽出できました。関数で行うことにしました。
 
本当にありがとうございました。