• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelで、条件と一致する最後のセルから順に表示)

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

このQ&Aのポイント
  • Excelで、条件と一致する最後のセルから順に表示したい方法について教えてください。
  • A社やB社などの最終購入日を基準にして、セルを逆順に表示する方法を教えてください。
  • 購入日や社名、品名などの条件に一致する最後のセルを表示する方法をお教えください。

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

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

A社、B社などの区切りに空白の行を一つ設けて、しかも日付は最後のセルから順に並べるとします。 元の表はシート1に有ってA1セルからD1セルには、項目名の日付、社名、品名、個数が順に並んでいるとして2行目から下方にデータが入力されているとします。 そこで社名ですがA,B,Cの順で並べるということですがその順序については予めしてしておくことが必要です。そのため例えばF1セルから下方にA,B,Cと社名を入力します。 作業列としてE2セルには次の式を入力して下方にドラッグコピーします。 =IF(B2<>"",MATCH(B2,G:G,0)*1000+COUNTIF(B:B,B2)-COUNTIF(B$2:B2,B2),IF(ROW(A1)>COUNTA(G:G)+COUNT(A:A),"",(ROW(A1)-COUNT(A:A))*1000+999)) なお、この式はA列の日付のデータが最後に入力された行よりもさらにG列の社名の数以上に下の行までドラッグします。 そこでお求めの表をシート2に表示させるとしてシート2のA1セルからD1セルにはシート1の項目名を入力します。 A2セルには次の式を入力してD2セルまで横にドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNT(Sheet1!$E:$E),"",IF(INDEX(Sheet1!$A:$D,MATCH(SMALL(Sheet1!$E:$E,ROW(A1)),Sheet1!$E:$E,0),COLUMN(A1))="","",INDEX(Sheet1!$A:$D,MATCH(SMALL(Sheet1!$E:$E,ROW(A1)),Sheet1!$E:$E,0),COLUMN(A1)))) 社名の区切りには空白の行が1行入ってお望みの表が表示されます。 なお、A列にはシリアル値が表示されますのでそれらの範囲を右クリックして「セルの書式設定」の「表示形式」から日付でお望みの表示にします。

eaude04
質問者

お礼

ご回答有難うございます。 私の望んでいた通りです。 細かく説明して頂き有難うございました。

その他の回答 (4)

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

回答No3です。シート1のG列には社名を並べますがB列に社名が有って、G列に無い場合にはE列にエラーが表示されますのでE2セルには次の式を入力して下方にドラッグコピーしてください。 =IF(B2<>"",IF(COUNTIF(G:G,B2)=0,"",MATCH(B2,G:G,0)*1000+COUNTIF(B:B,B2)-COUNTIF(B$2:B2,B2)),IF(ROW(A1)>COUNTA(G:G)+COUNT(A:A),"",(ROW(A1)-COUNT(A:A))*1000+999)) そうすることでG列に入力した会社のデータがシート2に表示されます。G列に例えばAとだけ入力すれば勿論A社のみのデータがシート2に表示されます。

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

こんにちは! 一例です。 ↓の画像でF1セルに検索したい「社名」を入力するとします。 F4セルに =IF(COUNTIF($B:$B,$F$1)<ROW(A1),"",INDEX($A$1:$D$1000,LARGE(IF($B$1:$B$1000=$F$1,ROW($A$1:$A$1000)),ROW(A1)),MATCH(F$3,$A$1:$D$1,0))) これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! これを列・行方向にオートフィルでコピー! F列の表示形式を「日付」にします。 これで画像のような感じになります。 ※ F3~H3セルの項目はA1~D1セルの項目と同じ項目名を入力しておきます。 ※ F1セルの社名を入れ替えるだけで表示されると思います。m(_ _)m

eaude04
質問者

お礼

ご回答有難うございます。 配列数式がいまいちわからず、勉強不足ですみません。 画像を添付して頂きとても見やすかったです。 有難うございました。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

データがA:D列に入っているものとします。 A:D列を選択した状態で、メニューの[データ]→[並び替え]と展開し、「並び替え」設定画面をだしたら、 最優先されるキー「社名」、順序「昇順」 (レベルの追加ボタンを押して) 次に優先されるキー「日付」、順序「降順」と設定し、して<OK>を押してみてください。 お望みの形に並び替えられているはずです。 #Excel2010での操作です。

eaude04
質問者

お礼

ご回答有難うございます。 せっかく教えて頂きましたが、自動で表示させたかったので...。 でも、並び替えの優先キーを追加出来ることは知らず、今後かなり役立ちそうです。 有難うございました。

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

エクセルのバージョンは2007以降をご使用でしょうか? その場合は、G1セルに会社名が入力されているなら、G2セルに以下の式を入力して右方向および下方向に適当数オートフィルしてください。 ==IFERROR(INDEX(A:A,LARGE(INDEX(($B$2:$B$100<>$G$1)*10000+ROW($2:$100),),ROW(A1)+COUNTIF($B$2:$B$100,"<>"&$G$1))),"") B列の会社名のデータが不要ならH列を選択して右クリックから「削除」してください。 なお、関数で対応する場合は、必要以上にデータ範囲を大きくしたり、表示データ数が多くなると再計算に時間がかかりシートの動きが重くなりますので、G1セルは入力規則のリストでドロップダウンリストから会社名を選択するようなシステムにするのが良いと思います。 #Officeソフトはバージョンによって使用できる関数や機能が大きくことなりますので、質問の際には必ずバージョンを明記するようにしましょう。

eaude04
質問者

お礼

早々のご回答有難うございます。 私のはExcel2010なのですが共有ファイルなので、Excel2007以前を使用する事もあり残念ながら教えて頂いた関数が使用出来ませんでした。 私個人で使用させて頂きます。 有難うございました。

関連するQ&A

専門家に質問してみよう