• ベストアンサー

EXEL 範囲内で最終行の日付を取得したい

いつも世話になります。 下記のような日程表があって、それぞれの最終日を知りたいのですが、   A列     B列     C列     D列 1 日付     甲      乙      丙 2 8/1      ●             ● 3 8/2      ●      ● 4 8/3              ●      ● 例えば、甲さんの最終日は8/2 乙さんは8/3 丙さんは8/3 日程は丙さんのように連続していない場合もあります。 該当者は500名ほどなので関数で取得したいのですが、いい方法があれば教えて下さい。

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

甲さんの場合、データが100行だとして、以下の様に入力し、Ctrl+Shift+Enterで確定。 =INDEX($A1:$A100,MAX((B1:B100="●")*ROW(B1:B100))) 乙さんからは、上記数式を列方向へコピー。

WindsorAvenue
質問者

お礼

早速教えていただきありがとうございます。できました! 配列関数と思うのですが、今後のために、解説をしていただけますと嬉しいです。 ありがとうございました。

その他の回答 (3)

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

E1セルに甲、F1セルに乙、G1セルに丙と入力してそれぞれの列の2行目に最終日を表示させるとしたらE2セルに次の式を入力しG2セルまでオートフィルドラッグしたのちにセルの表示形式を日付にします。 =INDEX($A:$A,MATCH("ー",B:B)) この式でーは半角英数モードでの-ではありません。ひらがな入力モードでーを入力します。 一旦式を書いた上で最後に-をひらがな入力でーにするとよいでしょう。

WindsorAvenue
質問者

お礼

ありがとうございます。 すごい!できました!!でも、なぜ… 教えてください。こんなシンプルな関数ですごいですね!!

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 日程表をSheet1、Sheet2のA2以下に名前を設定し、B列に最終日を抽出します。 Sheet2のB2に=INDEX(Sheet1!$A:$A,MATCH("",OFFSET(Sheet1!$A$1,,MATCH(A2,Sheet1!$1:$1,0)-1,500),-1))を入力、下方向にコピー

WindsorAvenue
質問者

お礼

ありがとうございます。 いろいろな方法があるんですね! 私ももっと勉強します!ありがとうございました。

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

たとえば甲さんについて =INDEX($A$1:$A$4,MATCH("",B$1:B$4,-1)) などとしてみます。 なお,アナタの実際のエクセルで「日程表の●」が,『生データで文字を記入している』のか,それとも実は計算式などで表示させているのかといった具体的な内容に応じて,もっと違う式で計算しないとイケナイ場合も考えられます。 また実際にアナタが作りたいエクセルの具体的なレイアウトに応じて,甲さんの計算結果を「甲さんと同じ列内」に計算して表示したいなどの場合は,計算結果が「最下行」になってしまわないよう,表の作り方などをよく考えたり,数式を工夫して作成しなければいけません。 寄せられた回答の数式で思わしくない結果になったときは,実際のアナタのエクセルの姿をもっと具体的に情報提供して,改めてご相談を投稿してみて下さい。

WindsorAvenue
質問者

お礼

●は生データで、手入力されたものです。 教えていただきました関数でできました。ありがとうございます。 MATCH関数で、検索方法を-1にするんですね!勉強になりました。

関連するQ&A

専門家に質問してみよう