dポイントプレゼントキャンペーン実施中!

いつも世話になります。

下記のような日程表があって、それぞれの最終日を知りたいのですが、

  A列     B列     C列     D列
1 日付     甲      乙      丙
2 8/1      ●             ●
3 8/2      ●      ●
4 8/3              ●      ●

例えば、甲さんの最終日は8/2 乙さんは8/3 丙さんは8/3

日程は丙さんのように連続していない場合もあります。
該当者は500名ほどなので関数で取得したいのですが、いい方法があれば教えて下さい。

A 回答 (4件)

甲さんの場合、データが100行だとして、以下の様に入力し、Ctrl+Shift+Enterで確定。



=INDEX($A1:$A100,MAX((B1:B100="●")*ROW(B1:B100)))

乙さんからは、上記数式を列方向へコピー。
    • good
    • 0
この回答へのお礼

早速教えていただきありがとうございます。できました!

配列関数と思うのですが、今後のために、解説をしていただけますと嬉しいです。

ありがとうございました。

お礼日時:2011/08/18 13:31

E1セルに甲、F1セルに乙、G1セルに丙と入力してそれぞれの列の2行目に最終日を表示させるとしたらE2セルに次の式を入力しG2セルまでオートフィルドラッグしたのちにセルの表示形式を日付にします。



=INDEX($A:$A,MATCH("ー",B:B))

この式でーは半角英数モードでの-ではありません。ひらがな入力モードでーを入力します。
一旦式を書いた上で最後に-をひらがな入力でーにするとよいでしょう。
    • good
    • 0
この回答へのお礼

ありがとうございます。

すごい!できました!!でも、なぜ…

教えてください。こんなシンプルな関数ですごいですね!!

お礼日時:2011/08/18 13:48

一例です。


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

ありがとうございます。

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

お礼日時:2011/08/18 13:41

たとえば甲さんについて


=INDEX($A$1:$A$4,MATCH("",B$1:B$4,-1))
などとしてみます。


なお,アナタの実際のエクセルで「日程表の●」が,『生データで文字を記入している』のか,それとも実は計算式などで表示させているのかといった具体的な内容に応じて,もっと違う式で計算しないとイケナイ場合も考えられます。

また実際にアナタが作りたいエクセルの具体的なレイアウトに応じて,甲さんの計算結果を「甲さんと同じ列内」に計算して表示したいなどの場合は,計算結果が「最下行」になってしまわないよう,表の作り方などをよく考えたり,数式を工夫して作成しなければいけません。

寄せられた回答の数式で思わしくない結果になったときは,実際のアナタのエクセルの姿をもっと具体的に情報提供して,改めてご相談を投稿してみて下さい。
    • good
    • 0
この回答へのお礼

●は生データで、手入力されたものです。

教えていただきました関数でできました。ありがとうございます。

MATCH関数で、検索方法を-1にするんですね!勉強になりました。

お礼日時:2011/08/18 13:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!