dポイントプレゼントキャンペーン実施中!

(SHEET1)                
A   B   C       
厚み 幅 長さ       
1  1   2   3       
2   1   2   4            
3  1   3   5       
4   2   2   1       
5   2   1   2
6   3   2   4
7   3   5   4

(SHEET2)
A  B   C
 1   □ □ □  ←しかくの中に値を入力すると、下の行にSHEET1に
 2            存在するデータを表示するようにしたい。
 3 
 4
 5





(例)
□ □ □ のように入力すると
↑ ↑ ↑
1  2

厚み 幅 長さ
1   2   3
1   2   4

□ □ □ のように入力すると
↑ ↑ ↑
2

厚み 幅 長さ
2   2  1
2   1  2

となるようにしたいのですが、どうすればよろしいですか?
教えてください。

A 回答 (5件)

配列数式などを使った関数はデータが多くなると計算に負担がかかります。

式は複雑になっても分かり易い式を使って対応することでしょう。
シート2のA1,B1,C1に抽出したいデータが入力されるとして、
シート1では例えば作業列としてE2セルには次の式を入力して下方にオートフィルドラッグします。

=IF(OR(COUNT(A2:C2)=0,COUNT(Sheet2!A$1:C$1)=0),"",IF(AND(Sheet2!A$1<>"",Sheet2!B$1="",Sheet2!C$1=""),IF(A2=Sheet2!A$1,MAX(E$1:E1)+1,0))+IF(AND(Sheet2!A$1="",Sheet2!B$1<>"",Sheet2!C$1=""),IF(B2=Sheet2!B$1,MAX(E$1:E1)+1,0))+IF(AND(Sheet2!A$1="",Sheet2!B$1="",Sheet2!C$1<>""),IF(C2=Sheet2!C$1,MAX(E$1:E1)+1,0))+IF(AND(Sheet2!A$1<>"",Sheet2!B$1<>"",Sheet2!C$1=""),IF(AND(A2=Sheet2!A$1,B2=Sheet2!B$1),MAX(E$1:E1)+1,0))+IF(AND(Sheet2!A$1<>"",Sheet2!B$1="",Sheet2!C$1<>""),IF(AND(A2=Sheet2!A$1,C2=Sheet2!C$1),MAX(E$1:E1)+1,0))+IF(AND(Sheet2!A$1="",Sheet2!B$1<>"",Sheet2!C$1<>""),IF(AND(B2=Sheet2!B$1,C2=Sheet2!C$1),MAX(E$1:E1)+1,0))+IF(AND(Sheet2!A$1<>"",Sheet2!B$1<>"",Sheet2!C$1<>""),IF(AND(A2=Sheet2!A$1,B2=Sheet2!B$1,C2=Sheet2!C$1),MAX(E$1:E1)+1,0)))


シート2のA2セルには厚み、B2セルには幅、C2セルには長さとそれぞれ文字列を入力し、
シート2のA3セルには次の式を入力してC3セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。

=IF(ROW(A1)>MAX(Sheet1!$E:$E),"",INDEX(Sheet1!$A:$C,MATCH(ROW(A1),Sheet1!$E:$E,0),COLUMN(A1)))
    • good
    • 0

2,3問前の質問にも書いたが、エクセルの関数でとなると、式が複雑になる。

1条件でも十分複雑。
また列的(項目別に)に2条件・3条件の抜き出しになると、関数では難しい。3列の値を結合したセルを作業列として作る手もあるが、数の場合は一工夫がいる。単純に結合してはならない。
もっと経験・試行を積めば、エクセルの関数では難しいことがわかる。経験や勉強をしてないからこんな質問になる。
ーー
操作でフィルタオプションの設定が適当だろう。
ーー
他では
フィルタオプションの設定の操作をして、マクロの記録を取ってVBAを修正し、実行することも出来ると思う。
ーー
アクセスのSQLなど以外では、3条件・2条件該当分を探すのは、プログラム記述としても簡単ではない。(全行について3列のデータを1つづつ繰返して聞いたりする方法(稚拙)をしないならば。)
もともとエクセルの仕組みとして、関数でそんなことが出来るようには、1つの関数を作ってないのだと思う。
データベース的なことになる。
ーー
この3条件の該当件数を出すのは、まだやさしい。ここにエクセル関数の領分が伺える。
    • good
    • 0

オートフィルタ推奨



数式で遊んでみた
A5セルに
=IF(AND(COUNT($A$2:$C$2)<>0,ROW(A1)>SUM(IF($A$2="",1,Sheet1!$A$2:$A$8=$A$2)*IF($B$2="",1,Sheet1!$B$2:$B$8=$B$2)*IF($C$2="",1,Sheet1!$C$2:$C$8=$C$2))),"",
IF(A$2<>"",A$2,
INDEX(Sheet1!A:A,SMALL(IF(IF($A$2="",1,Sheet1!$A$2:$A$8=$A$2)*IF($B$2="",1,Sheet1!$B$2:$B$8=$B$2)*IF($C$2="",1,Sheet1!$C$2:$C$8=$C$2),ROW(Sheet1!$A$2:$A$8)),ROW(A1)))))
[Ctrl]+[Shft] +[Enter] で確定、配列数式。{ }で挟まれる
右へ下へオートフィル
「エクセル 条件抽出 教えてください」の回答画像3
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
60歳でパソコンを使ったことのない方でも使えるものを、と思ってました。

お礼日時:2011/10/16 19:00

簡単な操作としては、オートフィルタやフィルタオプションの設定があるが如何でしょうか。


操作例は、添付URLを参照して下さい。

参考URL:http://www.eurus.dti.ne.jp/~yoneyama/Excel/kih_m …
    • good
    • 0

複数の行に同じ値があるのでいろいろ難しいのですが、その前に、逆にひとつ質問です。


フィルタではいけない理由は何でしょうか?
    • good
    • 0
この回答へのお礼

パソコンを使ったことのない60歳の方でも使えるものを、と考えていたので。

お礼日時:2011/10/16 19:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!