[[20150417133358]] 『データ抽出 』(みく) ページの最後に飛ぶ

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

 

『データ抽出 』(みく)

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

se_9様

即答ありがとうございました。
正常に抽出できています。
どうもありがとうございました。

(みく) 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

GobGob様

情報ありがとうございました。
ピボットテーブルは初めて使用しました。
今回は、ピボットテーブルを使用すると少し違う書式になってしまうので、
使用できるところで使用します。
ありがとうございました。

(みく) 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.