[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『データ抽出 』(みく)
sheet1に受注一覧があり、
sheet2のB3に社名を入力すると、sheet2のB6からF9のように、その会社のSheet1の明細が自動で出るような方法はありますか?
フィルターのオプションを使ってみたのですが、後から社名を変更すると初めからフィルターのオプションを設定することになり、
手間時間を省略したいと思ってます。
ご存じの方、ご教示お願いします。
Sheet1
[A] [B] [C] [D] [E] [F] [1] [2] 日付 社名 品名 金額 個数 [3] 4/1 A社 商品あ 100 2 [4] 4/1 A社 商品い 30 3 [5] 4/1 B社 商品い 30 3 [6] 4/1 B社 商品う 50 1 [7] 4/1 C社 商品あ 100 3 [8] 4/2 A社 商品あ 100 3 [9] 4/2 A社 商品う 50 2 [10] 4/3 B社 商品あ 100 3 [11] 4/3 C社 商品う 50 1 [12] 4/4 C社 商品い 30 3
Sheet2
[A] [B] [C] [D] [E] [F] [1] [2] [3] A社 [4] [5] 日付 社名 品名 金額 個数 [6] 4/1 A社 商品あ 100 2 [7] 4/1 A社 商品い 30 3 [8] 4/2 A社 商品あ 100 3 [9] 4/2 A社 商品う 50 2
< 使用 Excel:Excel2010、使用 OS:Windows7 >
Sheet2のB6セル =IFERROR(INDEX(Sheet1!B$3:B$1002,SMALL(IF(Sheet1!$C$3:$C$1002=$B$3,ROW($A$1:$A$1000)),ROW(A1))),"") Ctrl+Shift+Enterで確定 ←必ずこれで確定 右と下にフィルコピー
でどうでしょうか? (se_9) 2015/04/17(金) 13:59
即答ありがとうございました。
正常に抽出できています。
どうもありがとうございました。
(みく) 2015/04/17(金) 14:35
> =IFERROR(INDEX(Sheet1!B$3:B$1002,SMALL(IF(Sheet1!$C$3:$C$1002=$B$3,ROW($A$1:$A$1000)),ROW(A1))),"")
この式をブラッシュアップしてみたw
=IFERROR(INDEX(Sheet1!B:B,SMALL(IF(Sheet1!$C$3:$C$1000=$B$3,ROW($A$3:$A$1000)),ROW(A1))),"") ~~~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~~~ Ctrl+Shift+Enterで確定っす
=IFERROR(INDEX(Sheet1!B:B,SMALL(INDEX((Sheet1!$C$3:$C$1000<>$B$3)*10^10+ROW($A$3:$A$1000),0),ROW(A1))),"")
Enterだけで確定っす
てかフィルタオプションをマクロ記録すりゃ、いちいち設定し直さなくても クリックだけで抽出できるよんw (帰って来た名無しのおっさん) 2015/04/17(金) 14:54
てか、ピボットテーブルでいいんでないの?
・Sheet1のA:F範囲でピボットテーブル。
・レポートフィルター → 「社名」 ・行ラベル → 「日付」、「品名」 ・値 → 「金額」「個数」 (ともに合計) (GobGob) 2015/04/17(金) 15:47
情報ありがとうございました。
ピボットテーブルは初めて使用しました。
今回は、ピボットテーブルを使用すると少し違う書式になってしまうので、
使用できるところで使用します。
ありがとうございました。
(みく) 2015/04/17(金) 17:13
返答ありがとうございました。
行を増やしたので、B6から始めると、消えてしまいました。
すみません、B13から始める場合、どのような式なるか教えてください。
お願いします。
(みく) 2015/04/17(金) 17:19
> 行を増やしたので、B6から始めると、消えてしまいました。 > すみません、B13から始める場合、どのような式なるか教えてください。
B6からなのか、B13からなのかわかんないけど、 検索条件はB3、Sheet1の範囲も変更なし てことなら数式を変える必要なんかないっすよ?
=IFERROR(INDEX(Sheet1!B:B,SMALL(IF(Sheet1!$C$3:$C$1000=$B$3,ROW($A$3:$A$1000)),ROW(A1))),"") Ctrl+Shift+Enterで確定っす
=IFERROR(INDEX(Sheet1!B:B,SMALL(INDEX((Sheet1!$C$3:$C$1000<>$B$3)*10^10+ROW($A$3:$A$1000),0),ROW(A1))),"") Enterだけで確定っす
ROW($A$3:$A$1000) のとこが行挿入して変わってしまったんじゃないの?
Sheet1の範囲も実際の表に合わせてね。
てかフィルタオプションのマクロ化はダメなんすか? (帰って来た名無しのおっさん) 2015/04/17(金) 17:45
↑ からの続きw
数式で抽出&作業列使用の場合っす
作業列 Sheet1のG3 =IF(AND(Sheet2!$B$3=C3,C3<>""),ROW(),"") 下にコピーしてちょw
Sheet2(どのセルでも同じ式っす) =IFERROR(INDEX(Sheet1!B:B,SMALL(Sheet1!$G:$G,ROW(A1))),"")
右と下にコピーしてちょw (帰って来た名無しのおっさん) 2015/04/17(金) 18:48
ご回答ありがとうございました。
今回はうまくいっています。
今は、あまりマクロのことがわからないので、
そのうちマクロにします。
どうもありがとうございました。
(みく) 2015/04/17(金) 21:07
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.