No.1
- 回答日時:
質問の内容を実現するためにはアドバンスドフィルタの機能を理解する必要があります。
まずSheet1に以下のデータがあるとします
A列 B列 C列
1行目 品名 日付 数量
2行目 りんご 1月1日 1
3行目 りんご 1月1日 6
4行目 みかん 1月1日 14
5行目 りんご 1月2日 2
6行目 りんご 1月2日 7
7行目 みかん 1月2日 15
8行目 りんご 1月3日 3
9行目 りんご 1月3日 8
10行目 みかん 1月3日 16
次にSheet2に検索条件を入力します
A列 B列 C列
1行目 品名 日付 数量
2行目 りんご 1月2日 (空白)
「データ」→「フィルタ」→「フィルタオプションの設定」を選択し「指定した範囲」にチェックをつけて、
リスト範囲 「Sheet1!$A$1:$C$10」
検索条件範囲「Sheet2!$A$1:$C$2」
抽出範囲 「Sheet2!$D$1」
をそれぞれ指定して「OK」してみてください。
すると
D列 E列 F列
1行目 品名 日付 数量
2行目 りんご 1月2日 2
3行目 りんご 1月2日 7
が抽出されるはずです。
毎回フィルタオプションのパラメータを指定するのは大変ですから、マクロにしてしまえばいいですね。マクロサンプルも書きました。
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。
Sub Macro2()
Dim lastR As Long
lastR = Sheets("Sheet1").Range("A65536").End(xlUp).Row
With Sheets("Sheet2")
Sheets("Sheet1").Range("A1").Resize(lastR, 3).AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=.Range("A1:C2"), _
CopyToRange:=.Range("D1"), Unique:=False
End With
End Sub
コンボボックスは検索条件を入力する手段ですから、それは好きにしてください。手で入力しても、コンボボックスから選択しても検索条件が入力できればアドバンスドフィルタで抽出が可能です。
質問文に書いてある情報が乏しいのでアドバイスできるとしたらこんなところでしょうか。後はご自身で勉強してみてください。フィルタオプションの設定を行うときに「ツール」→「マクロ」→「新しいマクロの記録」でマクロ記録をとってみれば勉強のとっかかりになると思います
早速のご回答、ありがとうございます。
やはり関数では無理ですか。
勉強不足で失礼いたしました。
ご回答を参考にして、マクロを勉強してみます。
No.2
- 回答日時:
こんな問題は、当然VBAなどを勉強のこと。
VBAができないならあきらめること。
何でも質問者がしたいと思えば、関数程度でできると思うのは大間違い。
他人に回答をもらうのでなく自分のその方面の力を蓄えること。
関数は抜き出しは苦手です(それには理由があります)。
20条件などとんでもない。複雑すぎる。
1条件でも難しいが。
とりあえず1つのやり方を説明します。
例データ Sheet2とShee3を使う(理由はない)
Sheet2に
A2:B8(C列は式結果)
大村石川県金沢市
木下石川県輪島市
鈴木東京都青梅市1
佐藤三重県津市
山田北海道津市
近藤愛媛県西条市
浅野東京都青梅市2
C2に
=IF(NOT(ISERROR(FIND(Sheet3!$B$1,$B$2:$B$10))),MAX($C$1:C1)+1,"")
と入れて下方向に式を複写する。
結果上記C列の通り。
ーー
Sheet3にいって、条件をB1セルに入れる。
この場合「青梅市」と入れる。
Sheet3の
A2には
=INDEX(Sheet2!$A$2:$B$10,MATCH(ROW()-1,Sheet2!$C$2:$C$10,0),1)
b2に
=INDEX(Sheet2!$A$2:$B$10,MATCH(ROW()-1,Sheet2!$C$2:$C$10,0),2)
と入れて、下方向に式を複写する
結果
青梅市
鈴木東京都青梅市
浅野東京都青梅市
B1を 「輪島市」に変えると瞬時に
輪島市
木下石川県輪島市
#N/A#N/A
#N/Aが出ないようにする手ももちろんありますが、内容があれこれに
なるので略。
以上はimogasi方式といっています。WEBでimogasi方式で照会すれば1条件抜き出しの、過去の質問の他の回答者の回答も見られます。
ーー
同じ考えで2条件ぐらいまでは、式を複雑化すれば対処できそうですが、それ以上は複雑になりすぎる。
早速のご回答、ありがとうございます。
勉強不足で失礼いたしました。
しかも詳細な解説を頂き、感謝しております。
ご回答を参考にして、マクロを勉強してみます。
No.3ベストアンサー
- 回答日時:
「関数による条件検索」ということであれば、
頑張って条件を作れば出来ると思います。
~流れ~
(1)コンボボックスに表示させる内容をつくります。
(名前の定義)
(2)上記(1)で作った選択肢の選択肢を作ります。
(こちらも名前の定義)
(3)入力規則を利用して、(1)で選択した内容から(2)で更に条件を絞れるようにします。
(4)任意のセルに、今表示されている一番詳細な条件が表示されるようにします。(IF文)
条件が沢山あるみたいなので、条件2個バージョンで行きます!
*やりかた*
■シート1
│A B C D
-------------------
1 │ a a b c
2 │ b あ か さ
3 │ c い き し
(1)
挿入→名前→定義で
名前:選択肢
範囲:=Sheet1!$A$1:$A$2
(2)
挿入→名前→定義で
名前:a
範囲:=Sheet1!$B$2:$B$3
(2)
挿入→名前→定義で
名前:b
範囲:=Sheet1!$C$2:$C$3
(2)
挿入→名前→定義で
名前:c
範囲:=Sheet1!$D$2:$D$3
■シート2
A1セル選択→データ→入力規則→設定→入力値の種類:リスト→元の値:=選択肢
B1セル選択→データ→入力規則→設定→入力値の種類:リスト→元の値:=INDIRECT(A1)
A3セル:=IF(A1="",IF(B1="","",B1),A1)
コンボボックスを20個作るとなると、
aが選択された場合の名前の定義
bが選択された場合。。。。。。
と、かなり沢山の条件を作成したシートを作らなければいけないので
大変だと思います。
ただ、このやり方なら条件を変更したい時など、別シートに再度入力すれば良いので、
自分以外の人が触る場合もやり方を教えれば大丈夫と思います。
条件作成の表を分かりやすく作成することも工夫が必要ですね。。。
こんな感じでいかがでしょう??
Miusuke様、お忙しいところ、本当にありがとうございました。
早速チャレンジしてみます。
VBAじゃないとダメなのか、諦めておりました。
本当に感謝しております。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) エクセル 条件に合う日付に入力された時間数の合計したい 4 2022/06/17 22:18
- Excel(エクセル) Excel フィルタ後のコピー貼付けと可視セルの関係について 3 2023/02/07 16:42
- Visual Basic(VBA) ExcelのVBAを使い、複数シートの同一箇所を、同一条件にて一括でソルバーを回す方法について 1 2022/04/23 11:49
- Excel(エクセル) エクセルで、2つのセルに検索値を入れて結果を一覧表示させる 1 2023/07/10 10:26
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) Excelについて A1からA12まで、1月〜12月と入力し、 B1からB12の範囲に、C1とD1に 4 2022/05/26 22:48
- Excel(エクセル) Excelでの複数条件のカウントについて 1 2022/09/25 07:40
- Excel(エクセル) Excel コンボボックス バックカラー 1 2023/02/18 08:06
- Excel(エクセル) COUNTIFSについて 2 2022/08/30 14:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル初心者です 関数の入れ...
-
【関数】先頭だけにある、半角...
-
エクセル 白黒印刷で白線を印刷...
-
Excelのチェックボックスの使い...
-
【関数】適切な文字数の数字を...
-
Excelのpivotについて質問です
-
Excel ピボットテーブルで日付...
-
LOOKUP関数を使えばいいのでし...
-
エクセル関数を教えてください
-
エクセルのセルに同じ大きさの...
-
UNIQUE関数が使えないバージョ...
-
excelの不要な行の削除ができな...
-
エクセルで「-0.0」と表示さ...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの関数について教えて...
-
Aというブックの1というシート...
-
【マクロ】シート名を取得する...
-
VBA Private Sub Worksheet_Cha...
-
VBA、Excelのworkbook.open に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報