• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル 条件抽出 教えてください)

エクセルで条件抽出をする方法

このQ&Aのポイント
  • エクセルの条件抽出は、特定の条件を満たすデータを抽出する機能です。
  • SHEET1のデータに対して、SHEET2の□に値を入力すると、条件に合致するデータが表示されます。
  • 具体的には、SHEET2の□に対応するセルに値を入力すると、SHEET1の対応する行が表示されます。

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

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答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)))

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答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] で確定、配列数式。{ }で挟まれる 右へ下へオートフィル

naototanigucchi
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

簡単な操作としては、オートフィルタやフィルタオプションの設定があるが如何でしょうか。 操作例は、添付URLを参照して下さい。

参考URL:
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kih_moku.htm
全文を見る
すると、全ての回答が全文表示されます。
回答No.1

複数の行に同じ値があるのでいろいろ難しいのですが、その前に、逆にひとつ質問です。 フィルタではいけない理由は何でしょうか?

naototanigucchi
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBA,二つのExcelのsheetにデータ保存

    VBA初心者です。 皆様のお力をお貸し頂きたく質問させて頂きます。よろしくお願いいたします。 質問内容は、下記になります。 Excelのsheet1には、縦列A,B,C・・・とデータが入っております。 sheet1の例 A B C sheet2は、入力するsheetです。 今回はA列の3行目からとします。 問題は、sheet1の縦の列をA,B,C,Dとすればデータの更新は、出来るのですが sheet1のデータのA,B,C一つ飛んでEまた一つ飛んでGという感じでsheet1のデータを 飛ばしてsheet2に表示、更新(保存)をしたいと思います。 ですので、sheet2のA列の3行目からA,B,C,飛んでE飛んでGとsheet1からデータを 表示させ、さらにsheet2の入力値が変更されると、sheet1のデータが入っている A,B,C,E,Gに更新される仕様です。 sheet1(データが入っています) A , B , C , E , G , 値1 , 値2 , 値3   , 値4 , 値5 sheet2(入力する、入力したデータは、sheet1へ更新される) A列 3行目 、sheet1の値1(A列)が入ります。 4行目 、sheet1の値2(B列)が入ります。 5行目 、sheet1の値3(C列)が入ります。 6行目 、sheet1の値4(E列)が入ります。 7行目 、sheet1の値5(G列)が入ります。 以上です。申し訳ございませんが、ご教授よろしくお願いいたします。

  • エクセルでの関数を使った条件抽出方法について

    エクセル初心者です。 エクセルでの関数を使った条件抽出方法についてどなたかご教授願います。 よろしくお願いします。 Sheet1の特定のセルに対して、Sheet2中にある条件に一致するセルの値を 表示させる方法がわかりません。 <具体的内容> 次のような2つのシートがあります。 Sheet1       -------------------------     A     B     C  1                2  2  費目1 3  費目2 4  費目3 ------------------------- Sheet2 -------------------------     A     B     C     D 1  2          1     2     3 3  費目2   100   200   300 4  費目1    30    10    20 5  費目3   150   350   250 ------------------------- Sheet1のC1のセルと同じ数値をSheet2の2:2行から探して、 一致する数値に該当する列の3~4行目の値を、 Sheet1のA2:A3の費目とSheet2のA3:A5の費目とが 一致するようにして、Sheet1のB2:B3に表示したいです。 このときSheet1のB2~B3にはどのような関数式を入れたらよいですか? 上の場合だと、Sheet1のB2=10、B3=200、B4=350となってほしいです。 HLOOKUP、COLUMNなど組み合わせてみたのですが、 全くうまくいきません。簡単ではないのでしょうか? どなたか教えてください、よろしくお願いします。

  • 条件に一致する行データを別シートに抽出する

    日付別の各データが入力された総括のシートがあり「0」とします。 別に13個の項目別シートを固定の様式で作ってあります。「1~13」とします。 シート「0」のB2~B30までセル上に入力するデータが1~13の整数として入力する訳ですが、その入力されたデータセルの中で該当する数字を条件として抽出し目的のシートの決められた座標から順に行を開けずに表示したいのです。 例えばシート「0」のB列に6という数字が入力されていたら同じ行A、C、Dのデータを全てシート「6」のA、B、Cに表示させたいのです。 同じように他の数字も該当するシートに該当する数字の全てを表示したいのです できるだけ判り易く教えてくださいお願いします。

  • エクセル 関数を使わずにデータを取りたい

    EXCELを使ってデータ入力をしたいです。 下の図のように、シート1のA列にコードを入力すると、シート2のテーブルから値を引っ張ってくるようにしたい。 たとえば、シート1のA1に"C001"を入力したら、B1に"赤"が自動入力されるようにしたい。 シート1 A列 B列 行1 C001 シート2 A列 B列 行1 C001 赤 行2 C002 青 行3 C003 黄色 ただし、シート1のB列の値は、入力後に編集するため、ここには計算式を入れたくないのです。 なので、通常ならばB列にVLOOKUP関数を使えばすむことですが、計算式を入れずに上記を実現する方法を教えてください。

  • エクセル抽出に関して教えて下さい。

    エクセル初心者なんですが、抽出について教えて下さい! 例 シート(1)     A  B  C  D  E 1  8 2    ■ シート(2)    A  B  C  D  E 1  4  5  6  7  8 2  1  1  3  7  2   3  5  6  7  1  2 シート(1)のB2に シート(1)のA1に入った数字を シート(2)のA1~E1の中で探して 該当した数字の列の3行目をシート(1)のB2に表示させる。 すみません、意味不明だったらごめんなさい。 ご理解いただける方、よろしくお願い致します。

  • EXCEL抽出?についてご指導ください。

    シート1にあるデータをシート2に抽出したいのですが・・・ シート1にあるデータの2列目と3行目で交差する「A」を シート2のA1セルに「2」A2セルに「3」と入力すると 指定したセル(たとえばB1セルに「A」と表示(抽出)させたいのですが、ご存知の方教えていただけませんか? (シート1)   1 2 3 4 5 1 2 3    A 4 (シート2)   A  B  C 1 2  A 2 3 3 よろしくお願いします。

  • Excelでのデータ抽出

    Excelで外部結合風のデータ抽出を教えてください。 シートAとシートBに表形式のデータがあり、 シートAのA列の値とシートBのA列の値が一致するシートBの 行を抽出するのが目的です。 具体的には次のような感じです。 シートA         シートB ----------------  ---------------- A列 | B列 | C列     A列 | B列 | C列 ----------------  ---------------- 2  | 2B  | 2C      1  | 1BB | 1CC ----------------  ---------------- 4  | 4B  | 4C      2  | 2BB | 2CC ----------------  ---------------- 6  | 6B  | 6C      3  | 3BB | 3CC ----------------  ---------------- ↓ シートB ---------------- A列 | B列 | C列 ---------------- 2  | 2BB | 2CC ---------------- 以下以外の方法がありましたら教えてください。 1)アクセスに両シートのデータを取り込み、2つのテーブルを外部結合で連結させる。 2)マクロで二重ループをつくり、A列が一致した行を取り出す。 よろしくお願いします。

  • エクセルマクロで条件に該当する数値を探す

    エクセル初心者です。 シート1のA1~A18に1~18の数値がランダムに入っています。(重複した値は無し) シート2の3行目C3~T3にも1~18の数値がランダムに入っています。(空欄あり、重複した数値は無し) シート2の2行目C2~T2までは左から順に1~18の数値が入っています。(順位表示) 以上の条件下で下記の作業をマクロで実行させる式を教えてください。 シート1のA1~A18の値と同じ値を、 シート2の3行目C3~T3の中からどのセル(列)に入っているかを確認して、さらに該当する列の2行目C2~T2の値を、シート3の1行目A1~R1に表示させる。 例:シート1のA1=3、A2=2、A3=1の時、 シート2のC3=3、D3=1、E3=2でした。 シート2のC2=1、D2=2、E2=3です(この行の数値は毎回同じ) 上記の時シート3にはA1=1、B1=3、C1=2となります。 *シート1のA列A1~A18とシート3の1行目A1~R1の位置関係はリンクしています。(列→行) シート1 A列 1 3 2 シート2   A列 B列 C列 D列 E列 2行見出し見出し1  2  3 3行見出し見出し3  1  2 シート3 A列 B列 C列  2  1  3 ご理解頂けたでしょうか? 初心者ですので分かりやすい回答を宜しくお願いいたします。

  • 2つの条件からシート2に抽出

    シート1 A1は手入力D4手入力、H2は=D2&C2 担当者と週で検索して抽出する式を教えて下さい。何度もすみません。 上手く出来なくて1行しか抽出しないんです。 上記の表から1週目だったら、1週目の担当者のデータをシート2の表に抽出 週2だったら2週目の担当者データを抽出 A1・D1は手入力 A3は=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) 上記の様にシート2に表示したいんです。 細かく教えて下さい。何度やっても1行目のデータしか抽出しないんです。 A3=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) B3=IF($A3="","",IF(VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0)="","",VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0))) A4の2行目以降1になってしまって同じ物しか出ないんです。 Aの番号の抽出方法の式を教えて下さい。

  • エクセルで、2つのセル値(2つの条件)から、別シートの表から該当する値を参照する方法

    シート(1)のA列とB列のセルに入力されている値を元に、 シート(2)の表を参照し、該当する値をシート(1)のC列に 表示させる方法があれば 教えて頂けると助かります。 なおシート(1)のA列は、参照するシート(2)の表の列タイトルに対応し、 シート(1)のB列は、シート(2)の行タイトルに対応するマトリックス表に なっております。 また、この列行タイトルの表記は「1から」または「1から9まで」 という範囲での表示になっています。 (例:シート(1)元データ) No| A列 | B列 | C列 | --------------------------------- 1 | 07  |  22  |  20 | ←C列は、シート(2)表を参照  2 | 18  |  15  |  30 |        3 | 01  |  09  |  05 |       4 | 21  |  03  |  30 |  5 | 30  |  28  |  35 |  (例:シート(2)参照する表) A列\B列 | 1~9| 10~19 | 20~29 | -----------------------------------   01~  | 05  |  10  |  20  |         05~  | 15  |  15  |  20  |           10~  | 20  |  25  |  30  |        15~  | 25  |  30  |  30  |    20~  | 30  |  35  |  35  |  現在、手作業でC列への入力を行っております。 何とか、作業効率を上げたいと思っておりますので、 ご指導下さいます様 宜しくお願い致します。

専門家に質問してみよう