• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:行抽出・関数・複数条件)

Excelの行抽出関数で複数条件を組み合わせて使う方法について

このQ&Aのポイント
  • ExcelのAND()やCOUNTIFS()関数を使用して複数条件の行抽出を行いたいが、正しい結果が得られない。
  • 以下の質問を参考に、特定の条件を満たす行を抜き出す関数を作成したい。
  • 具体的な問題は、指定の値(例:100円)と特定の文字列(例:りんご)を含む行を抽出する方法。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

ABC列の1行目はちゃんとタイトル行にして、2行目からデータを列記します 簡単のためF1:H2に抜き出したい条件を記入しておきます F5には =IF(ROW(F1)>COUNTIFS($B:$B,$G$2,$C:$C,$H$2),"",INDEX($A:$C,SMALL(INDEX(($B$2:$B$99=$G$2)*($C$2:$C$99=H$2)*ROW(A$2:A$99),),ROW(F1)),COLUMN(A5))) と記入、右に下にコピーしておきます。

keniroya
質問者

お礼

($B$2:$B$99=$G$2)*($C$2:$C$99=H$2) のところを AND(($B$2:$B$99=$G$2),($C$2:$C$99=H$2)) としてしまっていたところが間違いだったようです。 また、勉強します。(*'ω'*)

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

その他の回答 (4)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.5

>しかし、AND()やCOUNTIFS()などを用いながら自分なりに複数条件の行抽出をしてみようとトライしてみたのですが、きちんとした行を返してくれません。 複数条件に合う行番号を返すには配列演算を行います。 ($C$2:$C$7=100)*($B$2:$B$7="りんご")*ROW(E$2:E$7) → {2;0;0;0;6;0} これを{2;6;0;0;0;0}の順に取り出すには次のようにします。 LARGE(($C$2:$C$7=100)*($B$2:$B$7="りんご")*ROW(E$2:E$7),COUNTIFS($C$1:$C$6,100,$B$1:$B$6,"りんご")-ROWS(E$2:E2)+1) → 2 LARGE(($C$2:$C$7=100)*($B$2:$B$7="りんご")*ROW(E$2:E$7),COUNTIFS($C$1:$C$6,100,$B$1:$B$6,"りんご")-ROWS(E$2:E3)+1) → 6 LARGE(($C$2:$C$7=100)*($B$2:$B$7="りんご")*ROW(E$2:E$7),COUNTIFS($C$1:$C$6,100,$B$1:$B$6,"りんご")-ROWS(E$2:E4)+1) → 0 配列演算の数式は確定するときにCtrl+Shift+Enterの打鍵が必要です。 これをEnterキーのみで確定できるようにするためにINDEX関数を使います。 INDEX(($C$2:$C$7=100)*($B$2:$B$7="りんご")*ROW(E$2:E$7),0) → {2;0;0;0;6;0} 最終的には次の数式を使うと目的の結果を得られるはずです。 =IFERROR(INDEX(A:A,LARGE(INDEX(($C$2:$C$7=100)*($B$2:$B$7="りんご")*ROW(E$2:E$7),0),COUNTIFS($C$1:$C$6,100,$B$1:$B$6,"りんご")-ROWS(E$2:E2)+1)),"") 右と下へ必要数コピーすれば良いでしょう。 尚、日付の列は表示形式を目的に合うものに変更してください。 貼付画像はExcel 2013で検証した結果ですがExcel 2007以降のバージョンで再現できます。

全文を見る
すると、全ての回答が全文表示されます。
  • msMike
  • ベストアンサー率20% (363/1775)
回答No.4

そ「のような表」内で、B列、C列において同じレコードが複数存在することは「アリエナ~イ」のですか?後になって「アリエ~ル」なんてシャーシャーと言わないでせうね? また、「そのままの形」と仰ったけど、「100円とりんご」と判っているのなら、A列だけの「そのまま」で御(オン)の字ではないですか?

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

エクセルの関数による「抜出し」問題だ。関数としては、式の組み合わせが、非常にむつかしい部類に入る。 その前にエクセルには「フィルタ」などがあるのに、「なぜ関数を使うの」といいたい。 #2のような回答が決まって出てくるが、この式の意味を理解できますか。 多分無理でしょう。これが判れば、エクセル関数は卒業かなと(個人的に)思う。 今までも毎月数回この問題が出てくるが、私は作業列を1列使ってやることをお勧めする。 「imogasi方式」でWEB照会すれば、過去の私の回答が出てくる。 例 http://okwave.jp/qa/q4432288.html 1列余分な列(D列)を使って、条件該当行に連続番号を作る。 7月1日 りんご 100  1 7月2日 ぶどう  20 7月2日 すいか  300 7月3日 みかん  100 7月5日 りんご 100  2 D列の式は =IF(AND(B2="りんご",C2=100),MAX($D$1:D1)+1,"") 意味は、該当行に上から連番を振っている。 MAX($D$1:D1)+1はそれより上の行の最大数に+1して、連続番号にしている。 ANDとIF関数とMAX関数なので、ありふれた関数で、そうむつかしくない。 この1,2、・・を、抜き出した部分での行番号として使う。 それにより、該当の行だけを、「上行から詰めて」持ってくることができる。 そもそも「抜出」とは、該当の行だけ(非該当行を捨てて)を、「上行から詰めて!」持ってくることを意味するのだ。 抜き出して入れるセル部分での、上からの、行番号として使う。 I2に=MATCH(ROW()-1,$D$1:$D6,1)と入れて式を下方向に複写すると (MATCH関数は該当のものを見つけるもの、ROW()は式を入れた行番号を意味する) (有名なVLOOKUP関数を使わないのは、1,2・・の連番がデータ部分の最左列にないからです。無理して最左列に持ってくれば使える) 2 6 となる。 これは2行目に元データの第2行、次に第6行を持ってくることの準備作業。 列として、たとえばI2に =INDEX($A$1:$C$6,MATCH(ROW()-1,$D$1:$D6,1),COLUMN()-8) と入れて、式を右方向に複写。 COLUMN()-8の部分は、本回答例では、I列から結果を持ってきているために、-8して1になるように補正しているもの。I列ーー>1、J列ーー>2、K列ーー>3となるように。 I2:K2の式を下方向に式を複写。 結果 2016/7/1 りんご 100 2016/7/5 りんご 100 I列のセルの書式は日付、K列のセルの書式は数値に設定しなおすこと。 :$C$6,の6はデータの最下行に変えること。 100の部分が日付書式になってしまうから修正。 上記では該当行数(上記例では2件)を超えた場合に、空白にする式を先頭に被せた方がよいが、式が長くなって、説明の本質部分をわかりにくくするので省略した。

全文を見る
すると、全ての回答が全文表示されます。
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 今仮に、元データがあるシートがSheet1であり、Sheet2のA列を作業列として使用して、Sheet1のE列~G列に抽出結果を表示させるものとします。  まず、Sheet2のA2セルに次の様な関数を入力して下さい。 =IF(AND(Sheet1!$B2="りんご",Sheet1!$C2="100円"),ROW(),"") 或いは =IF(AND(INDEX(Sheet1!$B:$B,ROW())="りんご",INDEX(Sheet1!$C:$C,ROW())="100円"),ROW(),"")  次に、Sheet2のA2セルをコピーして、Sheet2のA3以下に貼り付けて下さい。  次に、Sheet1のE2セルに次の様な関数を入力して下さい。 =IF(ISERROR(1/(INDEX($A:$C,SMALL(Sheet2!$A:$A,ROWS($2:2)),COLUMNS($E:E))<>"")),"",INDEX($A:$C,SMALL(Sheet2!$A:$A,ROWS($2:2)),COLUMNS($E:E)))  次に、Sheet1のE2セルをコピーして、Sheet1のF2~G2のセル範囲に貼り付けて下さい。  次に、Sheet1のE2セルの書式設定の表示形式を[日付]の 3/14 に設定して下さい。  次に、Sheet1のE2~G2のセル範囲をコピーして、Sheet1のE列~G列の3行目以下に貼り付けて下さい。  以上です。

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

関連するQ&A

  • エクセルで、条件に一致した行を別のセルに抜き出す方法

    エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。 たとえば、 <A列> <B列> <C列> 7/1 りんご 100円 7/2 ぶどう 200円 7/2 すいか 300円 7/3 みかん 100円 このような表があって、100円を含む行をそのままの形で、 別のセル(同じシート内)に抜き出したいのですが。 7/1 りんご 100円 7/3 みかん 100円 抽出するだけならオートフィルターでもできますが、 抽出結果を自動的に、別の場所に、常に表示させておきたいのです。 初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

  • エクセル 行にある項目を抽出

    間違えて他のカテゴリーで質問してしまいました。 そちらは閉めましたので改めてこちらで質問させてください。 エクセルで下記のような表から項目を抽出したいのですが うまくいきません A列 りんご みかん りんご ぶどう みかん と入力されていて任意のセルに、A列に入力されている項目から 重複分を除き抽出したいです 具体的には任意セルに「りんご、みかん、ぶどう」と抽出したいのです。 フィルタオプションを利用し、抽出することはできました。 また、それをマクロ登録すれば、A列に追加項目があっても 自動変更できるという、回答も頂き、確かにできたのですが、 このエクセルから、ハイパーリンクでワードへ飛ばしたり、 いろいろと込み入っているため、できれば、 マクロではなく、関数利用をしたいのですが、 どのような関数を利用すればよいのかわかりません。 ご存知でしたら、ご教示お願いいたします。

  • Excelで複数条件で抽出した複数データを出力

    Excelで複数条件で抽出した複数データを出力したい Shett1のセルAとセルBの複数条件で、Sheet2を検索し一致したSheet2のセルCを Sheet1の該当するセルCに入れたいのです。 それを関数でするのはどうしたらいいのでしょうか? Sheet1 A B NAME ID(タイトル) いちご A01 いちじく A02 かき B01 すいか C01 なし D01 ぱいなっぷる E01 ばなな E02 ぶどう F01 みかん G01 めろん H01 もも I01 りんご J01 Sheet2 A B C 名前 ID 漢字(タイトル) みかん G01 蜜柑 いちご A01 苺 ぶどう F01 葡萄 りんご J01 林檎 もも I01 桃 かき B01 柿 なし D01 梨 すいか C01 西瓜 いちじく A02 無花果

  • エクセルで項目抽出

    エクセルで下記のような表から項目を抽出したいのですが うまくいきません A列 りんご みかん りんご ぶどう みかん と入力されていて任意のセルに、A列に入力されている項目から 重複分を除き抽出したいです 具体的には任意セルに「りんご、みかん、ぶどう」と抽出したいのです。 オートフィル機能を使いやってみましたが、 A列に後からデータを追加すると追加データまでは拾えませんでした。 よろしくお願いいたします

  • 行内で空白、重複を除いた結果を別セルに表示したい

    A~D列に言葉が入っているのを、F列以降に空白、重複を除いて、結果を表示したいのですが、やり方がわかりません。(別シートではなく、同じシート内で処理したいです。) A~D列に入る言葉は200個程の種類があります。 行は4万行くらいのデーターがあるので行列を入れ替えた表には出来ません。 ジャンプで空白セル選択→まとめて削除をすると、データー数が多いので、パソコンが固まってしまいました。 なので、行ごとに処理をしたいのです。 よろしくお願いします。  A     B   C    D        F     G    H    I みかん ぶどう りんご みかん → みかん りんご ぶどう みかん (空白) (空白) みかん → みかん (空白) ぶどう りんご みかん → ぶどう  りんご みかん みかん ぶどう りんご すいか → みかん ぶどう りんご すいか

  • Excel ●がついているセルのみ抽出したい

    A列  B列  C列 ●  りんご  3    みかん  5 ●  ぶどう  2    バナナ  5 ↓ ●  りんご  3 ●  ぶどう  2 上記のように●がついているセルの横(B、C列)を抽出する関数はありますか? オートフィルタ以外でおわかりになりましたら教えてください。 よろしくお願いいたします<(_ _)>

  • エクセルで複雑条件での抽出

    特定の商品名を抽出したいと考えています。 商品   等級 -------------- りんご  1級 りんご  2級 みかん  2級 みかん  3級 みかん  4級 もも   1級 もも   3級 ぶどう  2級 ぶどう  4級 上記のような表があります。 抽出したいのは、「2級」の商品だけですが、同じ商品で「1級」があると抽出したくないです。 つまりこの表だと、「みかん」「ぶどう」の商品名を抽出したいです。 りんごは1級があるので、抽出したくありません。 このような場合は、フィルタでできるのでしょうか? もしくは関数などでできるならそれでも良いです。 色々考えてみましたが、うまくいきません。 どうぞお知恵をお貸しください。 よろしくお願い致します。

  • 行と列の条件に一致したら印を付けたい

    シート1に名前と商品のリストがあります 名前 商品 佐藤 りんご 佐藤 みかん 佐藤 ぶどう 加藤 みかん 山本 バナナ 山本 みかん 小林 りんご 小林 ぶどう 小林 みかん 小林 バナナ シート2の行に名前、列に商品名の表があり、シート1のリストを元に 行と列の条件に一致した箇所に印をつけたいのですが、 何か適当な関数はありますでしょうか? りんご みかん ぶどう バナナ 佐藤 加藤 山本 小林

  • エクセルの関数について教えてください

    例えば、A列に「りんご」「みかん」「ぶどう」「梨」「洋梨」とあり(空白のセルもあります)、このA列に「りんご」もしくは「梨を含む」場合に、B列に「○」を表示させたいのですが、関数でできますか? 「りんご」だけとか「梨を含む」というように単一の条件で指定する方法はわかるのですが…。 職場の管理表で使いたいのですが、どうしても解決できないので、お力を貸してください。 どうかよろしくお願いします。 ちなみに以下のような結果を求めています。    A   B 1 みかん 2 りんご ○ 3 梨   ○ 4 ぶどう 5 洋梨  ○ 6 ぶどう 7 りんご ○

  • 【エクセル】複数の列から同じ単語を含む行だけを再表示したい。

    本日2度目の質問になります(質問内容は異なります)。 先ほどの質問では迅速に教えていただき、本当にたすかりました。 今回の疑問についても、いろいろ検索してみたのですが、どうもピンと来るものがありません。 初心者なもので、、、よろしくおねがいします。 エクセルで、 【例】 Aさん・・・第一候補/りんご 第二候補/みかん 第三候補/ぶどう Bさん・・・第一候補/みかん 第二候補/りんご 第三候補/いちご Cさん・・・第一候補/ぶどう 第二候補/バナナ 第三候補/みかん 上記のような一覧表を作成するとします(第一候補/第二候補/第三候補はそれぞれ1列。つまり候補を挙げた列は3列あります)。 この表から、候補の順位に関係なく、第一~第三候補のどこかに「みかん」を挙げた人物を抽出し、その行だけを集めて別の表として保存したいのです。 一つの列からの抽出なら出来たんですが、複数となるとお手上げです。 初歩的なことかもしれませんが、教えてください!! よろしくおねがいします。

専門家に質問してみよう