• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで条件に合うものを別シートに抽出(関数))

エクセルで条件に合うものを別シートに抽出する方法

このQ&Aのポイント
  • エクセルの関数を使って、条件に合うデータを別のシートに抽出する方法を紹介します。
  • 条件は以下の通りです:担当が山田、希望日が6月2日以前、配達チェックが済でないデータ。
  • セル参照を使って6月2日と山田を指定すると、条件に合うデータがシート2に表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんばんは! 一例です。 ↓の画像でSheet1に作業用の列を設けています。 作業列G2セルに =IF(COUNTBLANK(Sheet2!$A$1:$B$1),"",IF(AND(A2<=Sheet2!$A$1,E2=Sheet2!$B$1,F2=""),ROW(),"")) という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そしてSheet2のA4セルに =IF(COUNT(Sheet1!$G:$G)<ROW(A1),"",INDEX(Sheet1!A:A,SMALL(Sheet1!$G:$G,ROW(A1)))) という数式を入れ列方向と行方向にオートフィルでコピー! A列の表示形式は「日付」にしておきます。 ただ、このままではSheet1に空白セルがあれば「0」が表示されてしまいますので、 当方使用のExcel2003の場合ですが、 メニュー → ツール → オプション → 「表示」タブ → 「ゼロ値」のチェックを外すと 画像のような感じになります。 以上、参考になれば良いのですが・・・m(__)m

yontyoru-9
質問者

お礼

ありがとうございます!! なるほど、そういうふうに組み合わせればいいのですね! 勉強になりましたっ 画像まで添付していただきとてもわかりやすかったです(^o^)

その他の回答 (5)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.6

もう回答は出尽くしていますが、いつも気になることを書きます。 この種の質問は週に3度ぐらい出ます。 タイプは「条件付き抜き出し問題」です。 しかし関数でやるのは、1セル当たりでも非常に長い式で、関数の5式以上の組み合わせになる式になります。 エクセルに検索に適した関数が作られてないことが原因です。 初心者には、自分で生み出せる式でなく、式の意味もわからないと思う。コピペして出来ましたと、其れで良い人は使ったら良い。しかし質問者の場合への修正も一苦労。 ーー 解法のタイプは((1)(2)(3)は広く言えば関数による解法でしょう) (1)A 作業列を使う    B 使わない (2)A 配列数式を使う    B 使わない(通常の式) (3)A ユーザー定義関数を使うー 一種のVBA   B 使わない。 (4)フィルタ の別になると思います。 ーーー ですから、私は (1)操作 フィルタ を使うことをすすめます。 (2)VBA (3)特別のソフト(フリーソフト)ただし見つけるのが難しい を考える人もあるでしょう。 ーーー 私は長年「imogasi方式」というのを書いてきました。 上記で言うと(1)のAにあたります Googleで「imogasi方式」で照会すれば、沢山の質問回答の例が出て、私以外の、今回既に出ているタイプの回答も毎回出ています。 ーー imogasi方式では 例データ  Sheet3  A列ーH列(G列は飛ばし) --は左寄せ表示防止のために入れたもので、実際は空白セル。山田と日付(A1toB1セル)が条件を入れるセルと仮定。 山田 2011/6/2 希望日 りんご ばなな みかん 担当 配達チェック 6月1日 2 -- 1 山田 1 6月3日 -- 4 2 佐藤 6月1日 3 -- -- 山田 済 6月2日 -- 1 -- 佐藤 6月2日 -- -- -- 山田 2 H列が作業列で、H3の式は =IF(AND(E3=$A$1,A3<=$B$1,F3=""),MAX($H$1:H2)+1,"") 下方向に式を複写してます。 やっていることは、条件に合う行に連番を振ってます。連番にしているところがミソです。 ーー Sheet4  のA3で =INDEX(Sheet2!$A$1:$F$100,MATCH(ROW()-2,Sheet2!$H$1:$H$100,0),COLUMN()) F列まで式を複写 A3-F3の式を下方向に式を複写 A列の表示形式を日付、B,C,D列の表示形式を数値に設定。 ーー 結果 Sheet3 A3から 2011/6/1 2 0 1 山田 0 2011/6/2 0 0 0 山田 0 ーー 残された問題点 ・0を空白にする ーー>(表示形式で[=0]"";G/標準 の設定など) ・下の行の#N/Aを出さないようにする は略(上記Googleで「imogasi方式」で照会して出てくる記事に)WEBには書いています)

noname#204879
noname#204879
回答No.5

[No.4]の訂正 添付図の左下図が「Sheet1」となっているのは「Sheet2」の間違いです。 なお、その上の図は「Sheet1」で正しいです。

noname#204879
noname#204879
回答No.4

[フィルタオプションの設定]による方法を案内しておきます。 添付図参照 1.Sheet2 のセル C2 に次式を入力    =AND(Sheet1!A2<=A$1,Sheet1!E2=B$1,Sheet1!F2="")   なお、セル C1 は空白のままにしておく 2.Sheet2 をアクティブにして、[データ]→[フィルタ]→[フィルタ   オプションの設定]を実行して、次の設定を行なった後で[OK]を   クリック    [抽出先]→    “指定した範囲”    [リスト範囲]→  Sheet1!$A$1:$F$10    [検索条件範囲]→ $C$1:$C$2    [抽出範囲]→   $A$3:$F$3

yontyoru-9
質問者

お礼

ありがとうございました 「フィルタオプションの設定」初めてこの機能を知りました! 勉強になりました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

補助列なしにSheet2のA3セル以下に該当データを表示させたいなら、以下のような関数を入力して下方向にオートフィルしてください。 F3セル: =INDEX(Sheet1!E:E,SMALL(INDEX(((Sheet1!$A$2:$A$100>$A$1)+(Sheet1!$E$2:$E$100<>$B$1)+(Sheet1!$F$2:$F$100="済"))*1000+ROW($A$2:$A$100),),ROW(E1)))&"" A3セル:(右方向にD3セルまでオートフィル) =IF($E3="","",INDEX(Sheet1!A:A,SMALL(INDEX(((Sheet1!$A$2:$A$100>$A$1)+(Sheet1!$E$2:$E$100<>$B$1)+(Sheet1!$F$2:$F$100="済"))*1000+ROW($A$2:$A$100),),ROW(A1)))) B3:D3セルの空白部分に0を表示しないのであれば、その範囲を右クリックしてセルの書式設定の表示形式をユーザー定義にして「0;;」と入力してください。 #エクセルのバージョンが記載されていないので、すべてのバージョンに対応できる数式を示しましたが、この数式は必ずしも最適な方法とは限りません。 Officeソフトはバージョンによって使用できる機能や操作方法が異なりますので、ご質問の際には必ずバージョンを明記するようにしましょう。

yontyoru-9
質問者

お礼

ありがとうございます いろいろな方法があるのですね! 勉強になりました!

回答No.2

商業高校卒業してます。 29歳主婦です。 参考までに聞いてください。 別のシートに、 条件があう情報を抜き出して一覧表示したい、 ということですよね?? 別のシートに表示させる必要がない方法を教えます。 違ったらスルーしてくださいね☆ まず、入力した『希望日』から『配達チェック』までをドラッグします。 ※日付や数字を入力したところは含まず、見出しの行のみ。 上部の『データ』タブを開いて、『フィルタ』を選択して、 『オートフィルタ』を選択すると、各見出しの右端にボタンが現れます。 自分の欲しい希望日のみを表示したいときは、 希望日のボタンを押して、(例)6月2日を選ぶと6月2日のみ表示されますし、 更にその中から、担当が山田のもののみ表示させたいときは、 希望日で6月2日と操作したボタンはそのままにして、 更に担当のボタンをおして『山田』を選択してください。 希望日は関係なく、山田担当のもののみ表示させい時は、 希望日で操作したボタンを『すべて』に戻す必要があります。 長くなりましたが、オートフィルタボタンを使うと、 それらを更に昇順や降順にも並べ替えられますから、便利ですよ。 データが消えるわけではないですし、 使い勝手いいと思います。 頑張ってください!!

yontyoru-9
質問者

お礼

ありがとうございます 説明不足で申し訳ありませんが、今現在オートフィルタで処理しているのです。 ですが担当者が非常に多くフィルタで抽出する時間と手間が非常にかかるので別シートに抽出したかったのです。

関連するQ&A