教えて!gooにおける不適切な投稿への対応について

エクセルの計算式について質問です。
画像の表について氏名が重複する中、最新の日付の行から指定した列のものを引き出したいです。
例えば重複する「B7」「B12」の萩原健人について最新の日付12行の中からD列の文字を引っ張りたい場合、どのような計算式が望ましいでしょうか?vlookupを使えばよいのでしょうか?自分なりに調べたのですが、エクセル初心者の為、答えを導けませんでした。申し訳ございませんが、ご助力お願いいたします。

「エクセルの計算式がわかりません」の質問画像

質問者からの補足コメント

  • スプレッドシートにも併用したいと思っています。「エクセル及びスプレッドシート」もしくは「スプレッドシートのみ」利用可能な計算式はございますでしょうか?

      補足日時:2021/04/04 17:19
gooドクター

A 回答 (4件)

googleスプレッドシートとExcelの関数の互換性はそれなりに高いと思うのですが、そうはいっても微妙に仕様が異なる場面に遭遇します。


No.1さんへのお礼のコメントを読むと、ご質問者もそこを解決したいのだと思います。そこで、スプレッドシートでもExcelでも使える数式を考えてみました。
添付画像をご覧ください。
タイムスタンプは上から下へ昇順にならんでいるようですが、敢えて若干順番を崩したデータを作成してあります。
この中から、最新の「萩原健人」のデータを見つけてD列の文字を表示させる訳です。
添付画像のように抽出すべきキーワードである「萩原健人」をB12セルに置き、C12セルに抽出結果を表示させるとするとC12に記述する数式は、

=INDEX(D:D,SUMPRODUCT((A2:A10=MAX(A2:A10))*(B2:B10=$B$12),ROW(A2:A10)))

となります。(添付画像①)
※A列に同じタイムスタンプのデータはないという前提です。

上記の数式は、当方の添付画像のデータをもとに範囲設定を行っていますので、実際に使用する場面では、ご質問者のデータ範囲に合わせてください。
また、この数式はタイムスタンプが必ずしも昇順でない場合でも使用できますが、タイムスタンプが昇順に並んでいる場合に限定してよいなら、No.1さんがお示しになった数式を若干修正して、

=LOOKUP(2,INDEX(1/($B$2:$B$10=$B$12),0),$D$2:$D$10)

という数式にすれば、Excelでもスプレッドシートでも使えます。この数式では「B12セル=萩原健人」に合致する「最終行」が返されます。(添付画像②)

実は、No.1さんの数式

=LOOKUP(2,1/($B$2:$B$10=F2),$D$2:$D$10)

を入力した後、CTRL+SHIFT+ENTERで確定し、配列数式にすればスプレッドシートでも使用できます。
ただし、スプレッドシートの配列数式は、ArrayFormulaを使うので、Excelの配列数式とは表記が異なります。(添付画像③)
逆に、この数式をそのままExcelに使おうとしても使用できません。
「エクセルの計算式がわかりません」の回答画像4
    • good
    • 1
この回答へのお礼

ありがとうございます!!!
問題なくちゃんと作動しました!
ご説明文もわかりやすく丁寧で、非常に助かりました。
初「教えてGOO」でしたが、こんなに知見の深い方がいらっしゃることにびっくりしています。
本当にありがとうございました。

せっかく助言していただいたにも関わらず、私の説明が足りなく、No.1の方にはご迷惑をおかけしました。大変申し訳ございません。

お礼日時:2021/04/05 19:32

添附圖參照(Excel 2019)


1.セル B15 以降に「引っ張りたい」氏名を入力⇒範圍 A1:I12 を
 ̄ ̄選擇⇒Alt+MC⇒“上端行”のみにチェック入れ⇒[OK]⇒次式を入
 ̄ ̄力したセル H15 を下方にズズーッとオートフィル
 ̄ ̄=MATCH(MAX(IF(氏名=$B15,Timestamp)),Timestamp,0)
【御斷はり】上式は必ず配列數式として入力の事
2.セル A15 に式 =INDEX(INDIRECT(A$14),$H15) を入力⇒
 ̄ ̄セル A15 を選擇⇒Ctrl+C⇒範圍 C15:F15 を選擇⇒Ctrl+V を
 ̄ ̄パシーッ⇒再び、セル A15 を選擇してそのフィルハンドルを
 ̄ ̄「エイヤッ!」とダブルクリック⇒再び、範圍 C15:F15 を選擇
 ̄ ̄して、そおフィルハンドルを「エイヤッ!」とダブルクリック⇒
オ・シ・マ・イ
「エクセルの計算式がわかりません」の回答画像3
    • good
    • 0
この回答へのお礼

私の知識不足のせいでちょっと文章を理解することができませんでした。
申し訳ございません。

お礼日時:2021/04/05 19:33

Excelのバージョンを教えてください。

    • good
    • 0

タイムスタンプが日付順で並んでいるのであれば



=LOOKUP(2,1/($B$2:$B$10=F2),$D$2:$D$11)
「エクセルの計算式がわかりません」の回答画像1
    • good
    • 0
この回答へのお礼

ご教授ありがとうございます。エクセルで試したところちゃんと作動しました!
ただスプレッドシートにも併用したいのですが、同じ式をいれても作動しません。なにかうまい方法はあるのでしょうか?
大変お手数ですが、ご存じであれば大変お手数ですが、教えていただきたいです、

お礼日時:2021/04/04 17:12

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング