Excelの関数を使って、条件に一致する行のみを抽出したいと考えています。
添付の画像が、理想の形です。
注文数 = 1 かつ 提供店舗 = 1 かつ 時間帯 = 0
という条件に一致する行のみを抽出したいのです。
自分で色々と調べてみたのですが、うまくいかず…
条件に合うデータをエクセル関数で全て順に抽出できる数式の作り方 - 病院SEにゃんとのパソコントラブル解決&エクセル関数・VBA活用術
https://nyanto.jimdofree.com/%EF%BD%B4%EF%BD%B8%EF%BD%BE%EF%BE%9...
を参考に、Sheet1のI列に、以下の関数を入れてみました。
=IFERROR(INDEX($A$3:$F$14,MATCH(LARGE(($C$3:$C$14 = 1 and $D$7:$D$14 = 1 and $E$7:$E$14 = 0)*1/ROW($A$3:$A14)),ROWS($A$3:$A$3),1/ROW($A$3:$A$14),0),COLUMNS($A$3:$A$3)),"")
しかし「この数式には問題があります」というエラーになってしまいます。
この方法でなくてもよいのですが、3つの条件に一致する行を抽出する方法がありましたら、お教えいただけないでしょうか。
質問に使用しているファイルはこちらです。https://xfs.jp/AeUGj8
よろしくお願い致します<m(__)m>
提示された条件の範囲での答えはついているようなので、汎用的なやつを行きます。
多少の癖はありますけれど、数式は使いません。
ポチポチ触るだけです。
それなりに新しい Excel が必要ですけれど、その辺りは仕事で使ってるなら、問題はないはず。
文字で説明すると、ちょっと長いですけれど、実際に触りながら確認すると、それほど難しくありません。
ただ、前述の「癖」があるので、事前準備として Sheet1 の表に以下の条件のデータを作ってください。
Excel のフィルターでポチポチやってることを、まとめてやってくれます。
なので、もっと複雑な条件でもフィルターでできることならできます。
例えば、こんなのもできます。
フィルターで行けるので、文字列での絞り込みも、ある程度は可能。
Sheet1 の表が更新されたときは、Sheet2 に移って、リボンの「データ」の「クエリと接続」の「すべて更新」をクリック。
条件を変えたければ、「データ」の「クエリと接続」の「クエリと接続」をクリックすると、右側にクエリの一覧(先の手順のままであれば「テーブル1」というのがあるはず)を右クリックして「編集」を選択。
フィルターの条件を変えてください。
Sheet1 の表は、Excel の「テーブル」という機能を使ってます。
選択したエリアの右下のセルにに、ちょっと太めの "┛" が表示されてるはず。
そこまでがクエリの対象範囲です。
Sheet1 のデータを更新した場合は、そのマークが期待する範囲に入ってるかどうかの確認をしてください。
長くなりましたけど、クエリを使うときの長所と短所。
■メリット
■デメリット
moon-fonduさん こんちにわ!
かなーり雑にサンプルを作成してみました。
Excel関数だけで一応対応しております。
注文履歴(moon-fonduさん提示のデータ)と抽出結果の表示シートを分けました。
注文履歴シートでやってること
抽出条件に一致する列で、何番目かを別列表示
抽出結果表示シートでやってること
抽出結果シート側に一致する列の1列目から順に表示
ざっくり説明で済みません。
ご要望が実現できているかご確認いただければと存じます。
どうぞよろしくお願いいたします。
moon-fonduさん ご要望に沿えていないようで申し訳ありません。
抽出結果シートに設けた条件1~3は可変入力可能な形にしてあります。
注文数 = 1、提供店舗 = 1、時間帯 = 0 という条件を
注文数 = 3、提供店舗 = 1、時間帯 = 0 と変更していただくと
結果が変わると思います。条件の指定が間違っていたら申し訳ありません。
in899040115zさんありがとうございます、そういうことだったんですね!
最初、シートの使い方がわからなかったのですが、抽出結果シートの1~3に希望の条件の値を入れると、その行を抽出してくれました。
ありがとうございます<m(__)m>
こちらは参考になるでしょうか。括弧の位置の修正と「ROWS($A$3:$A3)」と「COLUMNS($A$3:A$3)」のとこの修正と「and」を掛け算にしてみました。(^_^;
=IFERROR(INDEX($A$3:$F$14,MATCH(LARGE((($C$3:$C$14 = 1) * ($D$3:$D$14 = 1) * ($E$3:$E$14 = 0))*1/ROW($A$3:$A$14),ROWS($A$3:$A3)),1/ROW($A$3:$A$14),0),COLUMNS($A$3:A$3)),"")
ポイント、沢山ありがとうございました。参考までに、VBAでもやってみました。(^_^;
VBAありがとうございます。
実行してみました。
希望の行がうまく抽出できました、ありがとうございます(^^;)
G列に 「=C3&D3&E3」 として
そのG列のフィルタで「110」のものをフィルタ掛けるのはダメなんですかね。
たかさん、そうですよね。
その方法なら関数も単純化できるかもです。
提示された条件の範囲での答えはついているようなので、汎用的なやつを行きます。
多少の癖はありますけれど、数式は使いません。
ポチポチ触るだけです。
それなりに新しい Excel が必要ですけれど、その辺りは仕事で使ってるなら、問題はないはず。
文字で説明すると、ちょっと長いですけれど、実際に触りながら確認すると、それほど難しくありません。
ただ、前述の「癖」があるので、事前準備として Sheet1 の表に以下の条件のデータを作ってください。
Excel のフィルターでポチポチやってることを、まとめてやってくれます。
なので、もっと複雑な条件でもフィルターでできることならできます。
例えば、こんなのもできます。
フィルターで行けるので、文字列での絞り込みも、ある程度は可能。
Sheet1 の表が更新されたときは、Sheet2 に移って、リボンの「データ」の「クエリと接続」の「すべて更新」をクリック。
条件を変えたければ、「データ」の「クエリと接続」の「クエリと接続」をクリックすると、右側にクエリの一覧(先の手順のままであれば「テーブル1」というのがあるはず)を右クリックして「編集」を選択。
フィルターの条件を変えてください。
Sheet1 の表は、Excel の「テーブル」という機能を使ってます。
選択したエリアの右下のセルにに、ちょっと太めの "┛" が表示されてるはず。
そこまでがクエリの対象範囲です。
Sheet1 のデータを更新した場合は、そのマークが期待する範囲に入ってるかどうかの確認をしてください。
長くなりましたけど、クエリを使うときの長所と短所。
■メリット
■デメリット
a-kuma3さんありがとうございます、すごいです!
Excelにこんな機能があったんですね!
power queryエディター、いいです。
普通にフィルターをかけるよりたくさんの機能があるようですし。
普通のフィルター機能だと、他の列にも影響が及んで同じシートにソート結果とかを載せれなかったですが、これなら対応できますね。
うまくソートできました。
ありがとうございました。
a-kuma3さんありがとうございます、すごいです!
Excelにこんな機能があったんですね!
power queryエディター、いいです。
普通にフィルターをかけるよりたくさんの機能があるようですし。
普通のフィルター機能だと、他の列にも影響が及んで同じシートにソート結果とかを載せれなかったですが、これなら対応できますね。
うまくソートできました。
ありがとうございました。