
(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
となるようにしたいのですが、どうすればよろしいですか?
教えてください。
No.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)))
No.4
- 回答日時:
2,3問前の質問にも書いたが、エクセルの関数でとなると、式が複雑になる。
1条件でも十分複雑。また列的(項目別に)に2条件・3条件の抜き出しになると、関数では難しい。3列の値を結合したセルを作業列として作る手もあるが、数の場合は一工夫がいる。単純に結合してはならない。
もっと経験・試行を積めば、エクセルの関数では難しいことがわかる。経験や勉強をしてないからこんな質問になる。
ーー
操作でフィルタオプションの設定が適当だろう。
ーー
他では
フィルタオプションの設定の操作をして、マクロの記録を取ってVBAを修正し、実行することも出来ると思う。
ーー
アクセスのSQLなど以外では、3条件・2条件該当分を探すのは、プログラム記述としても簡単ではない。(全行について3列のデータを1つづつ繰返して聞いたりする方法(稚拙)をしないならば。)
もともとエクセルの仕組みとして、関数でそんなことが出来るようには、1つの関数を作ってないのだと思う。
データベース的なことになる。
ーー
この3条件の該当件数を出すのは、まだやさしい。ここにエクセル関数の領分が伺える。
No.3
- 回答日時:
オートフィルタ推奨
数式で遊んでみた
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] で確定、配列数式。{ }で挟まれる
右へ下へオートフィル

No.2
- 回答日時:
簡単な操作としては、オートフィルタやフィルタオプションの設定があるが如何でしょうか。
操作例は、添付URLを参照して下さい。
参考URL:http://www.eurus.dti.ne.jp/~yoneyama/Excel/kih_m …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
表計算ソフトでの様式の呼称
-
vba テキストボックスとリフト...
-
エクセルのVBAで集計をしたい
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【マクロ】元データと同じお客...
-
【マクロ】左のブックと右のブ...
-
他のシートの検索
-
【画像あり】オートフィルター...
-
【マクロ】【配列】3つのシー...
-
Office2021のエクセルで米国株...
-
【マクロ】【相談】Excelブック...
-
エクセルでフィルターした値を...
-
【画像あり】【関数】指定した...
-
エクセルのリストについて
-
エクセルに写真が貼れない(フ...
-
エクセルのライセンスが分かり...
-
エクセルの複雑なシフト表から...
-
【関数】=EXACT(a1,b1) a1とb1...
-
エクセルシートの見出しの文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報