• ベストアンサー

Excelで、条件と一致する最後のセルを検索したい

Excelで、条件と一致する最後のセルを検索したいのですが、どの関数をどのように使えばいいかわかりません。 どなたかお力をお貸し下さい。 問) 日付  社名  品名  個数 1/1   A    あ    1 1/1   C    い    2 1/2   B    う     3 1/2   A    え    4 1/3   C    お    5 1/3   A    あ    3 答) A社の最終購入日は  1/3 あ 3 B社の最終購入日は  1/2 う  3 C社の最終購入日は  1/3 お 5 となるようお願いします。

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

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

エクセルには「最後の該当」を検索する関数はありません。 無駄に複雑な数式を駆使すればもちろん「やればできます」が、添付図のようにちょっと工夫するだけで、普段使いの数式だけでやっつけるのがお勧めです。 A2: =IF(OR(C2="",COUNTIF($C$2:C2,C2)<COUNTIF(C:C,C2)),"",C2) 以下コピー 答えは簡単なVLOOKUP関数を使うだけです。 H2: =IF(COUNTIF($A:$A,$G2),VLOOKUP($G2,$A:$E,2,FALSE),"") まぁ一応ご参考に作業列を使わない方法: H2: =IF(COUNTIF($C:$C,$G2),INDEX(B:B,MAX(IF($C$2:$C$999=$G2,ROW($C$2:$C$999))))) と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力する 説明は省略しますので、ブラックボックスで使ってください。

eaude04
質問者

お礼

早々に有難うございます。 普段よく使う関数で出来るなんて感激です。 本当に助かりました。 有難うございます。

その他の回答 (4)

noname#204879
noname#204879
回答No.5

添付図参照 E2: =A2&"_"&B2 セル E2 を下方にズズーッとドラッグ&ペースト H2: =SUMPRODUCT(MAX((B$2:B$7=G2)*(A$2:A$7))) I2: =INDEX(C:C,MATCH($H2&"_"&$G2,$E:$E,0)) セル I2 を右隣にドラッグ&ペースト 範囲 H2:J2 を下方にズズーッとドラッグ&ペースト

eaude04
質問者

お礼

こんなに短い式で出来るとは思ってもいませんでした。 3日かけても全然わからなかったのに・・・。 有難うございました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

配列数式や複雑で分かりにくい数式は計算に負担がかかります。 出来るだけやさしく処理するためには作業列を作って対応することです。 作業列が目障りでしたらその列を選択して右クリックし、「非表示」を選択すればよいでしょう。 お示しの表がシート1に有ってA1セルからD1セルには項目名が日付、社名、品名、個数と並んでいます。 E2セルには次の式を入力して下方にドラッグコピーします。 =IF(B2="","",IF(COUNTIF(B$2:B2,B2)=COUNTIF(B:B,B2),B2,"")) お望みの表をシート2に表示させるとしてA1セルには社名、B1セルには日付、C1セルには品名、D1セルには個数と入力します。 シート2のA2セルから下方には社名を入力します。 B2セルには次の式を入力して右横方向にD2セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF($A2="","",INDEX(Sheet1!$A:$D,MATCH($A2,Sheet1!$E:$E,0),IF(COLUMN(A1)=1,1,IF(COLUMN(A1)>=2,COLUMN(A1)+1)))) 最後にB列のデータはシリアル値になっていますので日付の表示形式に変えます。

eaude04
質問者

お礼

わかりやすいご説明有難うございます。 COLUMN関数がよくわからなかったので勉強しました。 ひとつ賢くなりました。 有難うございました。

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

こんにちは! 一例です。 ↓の画像でF列の社名は入力済みだとします。 G2セルに =MAX(IF(B$1:B$100=F2,A$1:A$100)) これは配列数式になりますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合はG2セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 次にH2セル(配列数式ではありません)に =INDEX(C$1:C$100,SUMPRODUCT(($B$1:$B$100=$F3)*($A$1:$A$100=$G3)*ROW($A$1:$A$100))) という数式を入れ隣のI2セルまでオートフィルでコピー! 最後にG2~I2セルを範囲指定 → I2セルのフィルハンドルで下へコピーで 画像のような感じになります。 尚、エラー処理はしていません。m(_ _)m

eaude04
質問者

お礼

配列数式がわからず、勉強不足ですみません。 これを機に、勉強します。 有難うございました。

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

重複のない社名一覧の抽出を含めて、すべて関数だけで各社名の一番下の行を表示したいなら以下のような関数を使うことになります(セル位置は添付画像参照)。 G2セル(重複のない社名の抽出) =INDEX(B:B,SMALL(INDEX((MATCH($B$2:$B$100&"",$B$2:$B$100&"",0)<>ROW($B$2:$B$100)-1)*1000+ROW($B$2:$B$100),),ROW(A1)))&"" F2セル(日付:セルの表示形式を日付に設定) =IF($G2="","",INDEX(A:A,MAX(INDEX(($B$2:$B$100=$G2)*ROW($B$2:$B$100),)))) H2、I2セルはF2セルの数式をコピー貼り付け(セルの書式を「標準」にする)。

eaude04
質問者

お礼

全て関数だけで出来てしまうなんて驚きです。 この式を使えるようになるよう勉強します。 有難うございました。

関連するQ&A

  • Excelで、条件と一致する最後のセルから順に表示

    Excelで、条件と一致する最後のセルから順に表示したいのですが、どの関数をどのように使えばいいかわかりません。 どなたかお力をお貸し下さい。 問) 日付  社名  品名  個数 1/1   A    あ    1 1/1   C    い    2 1/2   B    う     3 1/2   A    え    4 1/3   C    お    5 1/3   A    か    6 1/4   A    き    7 1/4   C    く     8 1/5   B    け    9 1/5   A    こ    10 答) A社の最終購入日から順に  1/5 こ 10                    1/4 き 7                    1/3 か 6                    1/2 え 4                    1/1 あ 1 B社の最終購入日から順に  1/5 け 9                    1/2 う 3 C社の最終購入日から順に  1/4 く 8                    1/3 お 5                    1/1 い 2 となるようお願いします。

  • エクセル関数でセル個数検索で2つの条件が一致する行数を求める方法はあり

    エクセル関数でセル個数検索で2つの条件が一致する行数を求める方法はありますでしょうか? セル個数の場合=COUNTIF(A1:A50,"晴れ")でセル個数を求めますがB1:B50のセルに曜日が記入されているとしてA列の晴れとB列の日曜日が一致するセルが何回(何行)あるか求める関数はありますでしょうか?よろしくお願いします。ソフトはXPを使用しています。

  • エクセルでセルの検索

    エクセル2000で複数検索条件に当てはまるセルの個数を関数で処理したいのですが、何かいい方法はありますか? たとえば、 A列 日付(2004/12/11など) B列 状態(○or×) C列 会社名(A社など) となっていて、 A列が「2004/12/11」でB列が「○」でC列が「A社」の条件を満たすセルの個数を知りたいなどです。 オートフィルターで絞り込むようなイメージです。 この結果を値として欲しいのです。 宜しくお願いします。

  • エクセルでセルの検索2

    前の質問(QNo.1122144)で説明が不十分だった為再度投稿致します。 エクセル2000で複数検索条件に当てはまるセルの個数を関数で処理したいのですが、何かいい方法はありますか? たとえば、 A列 日付(2004/12/11など) B列 状態(○or×) C列 会社名(A社など) D列 品番(123456789など数値or文字列) となっていて、 A列が「2004/12/11」でB列が「○」でC列が「A社」の条件を満たすD列の重複を削除した状態のセルの個数を知りたいなどです。 オートフィルターで絞り込んでD列の重複を削除したイメージです。この方法だとこの処理をした時のみは個数が解りますが、やりたいのは編集した時にこの処理が反映されるようにしたいのです。 宜しくお願いします。

  • Excelで条件に合った数字の数をカウントしたいのですが・・・

    エクセルで【表1】のような表がある時、各品名別に在庫数<ゼロ のセルを、 関数を使ってカウントしたいのです。 【表1】 日付 品名 販売数 在庫数 1   A   30   52 2   A   20   22 3   A   25   2 4   A   15   -23 1   B   40   48 2   B   55   8 3   B   50   -47 4   B   45   -97 1   C   35   10 2   C   20   -25 3   C   40   -45 4   C   20   -85 但しこの時条件があり、品名ごとにカウントする期間が異なります。 別表で、【表2】のように 期間が入力された表があり、 品名Aなら 1~2日目のマイナスの在庫数を、 Bなら 1~3日目のマイナスの在庫数をカウントしたいのです。 【表2】 品名  期間 A    2 B    3 C    4 最終仕上げたいのは【表3】で、「在庫がマイナスになった期間」の列に入れる 関数を教えて頂きたいのです。 【表3】 品名  在庫<ゼロ になった期間 A     0 B     1 C     3 COUNTIF関数とOffset関数などを使ってみたのですが、 【表1】の日付が品によって 3になったり10になったりと変化するため、 引数の「基準」をどうすればいいのかが分からずに頓挫してしまいました・・・。 長々と分かりにくい説明になってしまいましたが、助けて下さい。 よろしくお願いします。

  • エクセルでの検索について

    色々自分で調べてみましたが分からないので投稿しました。 日付・電話番号・品名の入力された表で 1/1 0000 A 1/2 0001 B 1/3 0002 A 1/4 0003 C 1/5 0000 D 1/6 0000 A  ・  ・  ・ とあった時に電話番号・品名が一致する行の一覧を抽出したいのですが (例えば 0000 Aの条件の合う日にちの一覧等) どういう方法を使えばいいのか分かりません。 COUNTやMATCH関数を使うのかと思ったのですがうまくいかないもので・・・ 出来れば関数で行なういい方法はないでしょうか? よろしくお願いします

  • Excelで2つの条件が一致したデータの抽出

    Excelで2つの条件が一致したデータの抽出 こんにちわ。 タイトルの通り、Excelで2つの条件が一致したデータの抽出作業を行っています。 Sheet1にデータがあり、以下のような構成なっています。 A列    B列    C列 日付   社員名   売上金 6月1日 鈴木     3万円 6月1日 今井     2万円 6月2日 川口     10万円 6月3日 鈴木     4万円 6月3日 野口     1万円 6月4日 鈴木     3万円 6月7日 佐藤     6万円 6月7日 今井     2万円 6月7日 黒木     7万円 6月9日 野口     3万円 A列の日付は不連続かつ同一日付のものもあります。 Sheet2に以下のフォーマットを作成してあります。 1行目:B1セルから連続する日付(6/1~6/30まで) A列:A2から社員名(社員名は各セルに固定) 6月1日 6月2日 6月3日 6月4日 6月5日 ・・・ 鈴木 佐藤 今井 川口 野口 黒木 Sheet2のセルに、Sheet1の表の日付と社員名が一致した売上金のデータを反映させたいのです。 そこで例えばSheet2のB2セルには以下の関数を入れました。 B2=IF(ISNA(MATCH($A$2:$A$9&$B$1:$N$1,INDEX(Sheet1!$C$2:$C$24&Sheet1!$A$2:$A$24,))),"",INDEX(Sheet1!$D$2:$D$24,MATCH($A$2:$A$9&$B$1:$N$1,INDEX(Sheet1!$C$2:$C$24&Sheet1!$A$2:$A$24,),0))) この関数を入れると、該当するところには売上金のデータが反映されるものの、それ以外のセルには全て#N/Aが表示されてしまいます。 この#N/Aを表示させないようにするには、関数をどのようにすればいいのでしょうか? エクセル初心者なので、分かりやすくご教授願えたら…と思います。 よろしくお願いいたします。 使用OS:XP  使用ソフト:Office2000 Pro.

  • エクセルの検索条件に一致するセルの個数の表示について

    A1・A6・A5・B5・・・・と離れたセル内で、「中」などの個数を表示させたいのですが、COUNTIFですと、連続したセルでしか検索できません。 離れたいくつかのセルを検索して、その個数を表示させるにはどうしたらいいでしょうか。 よろしくお願いします。

  • エクセル 複数条件一致したセルの抽出方法について

    はじめまして。 エクセルの複数条件で一致するセルの抽出方法の質問が幾つかありましたので 参考に試してみましたが上手く計算することができなくて、投稿致しました。 問題が解決すると非常に助かりますので、教えて頂けますでしょうか。 質問内容 エクセル2007を使用しております。 同じ商品を複数社で購入する場合、単価が異なります。 購入先と商品名で一致した場合に単価が参照されるようにしたいです 2つのシート使用しており、1つは■データベースシート、1つは●入力シートとなってます。 ■データベースシートの項目は A列    B列   C列   D列   E列    F列 購入先  〔※〕  〔※〕  品名   〔※〕   単価 AA社             みかん       1,000 BB社            みかん       1,500 CC社            みかん        700 CC社             いちご        5,000 DD社              いちご        3,500 〔※〕B・C・E列にも項目がありますが、質問(単価参照)とは関連がありません。 この項目は他のデータと使うことがありますので、削除や他の列に移動をしない方法が希望です。 ●入力シートの項目も同じです。 A列    B列   C列    D列    E列     F列 購入先  〔※〕  〔※〕   品名    〔※〕    単価 【 (1) 】           【 (2) 】          《 (3) 》 (3)に関数を入力されるように組みたいです。(1)と(2)を入力すると ■データベースシートの「F列」の単価が参照されるイメージです。 分かり難い質問で申し訳ありません。お知恵を頂けますと助かりますので 何卒宜しくお願い致します。 以上

  • エクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてくだ

    エクセルの複数条件に一致したセルを抽出したいのですが、関数で教えてください。                A列   B列    C列 Aファイルには 行 【注文月日】、【氏名】、【商品金額】が記入されています。 Bファイルには 行 【注文月日】、【氏名】、【税金額】が記入されています。 AファイルのD列に、Aファイルの【注文月日】かつ【氏名】がBファイルの【注文月日】かつ【氏名】と一致する場合のBファイルC列の【税金額】を表示したいのです。 VLOOKUP関数では条件が1つだけなので使用できませんが、似たような関数で複数条件ができる関数があるなら教えてください。

専門家に質問してみよう