• ベストアンサー

Excelの縦を抽出する関数について質問です。

Excelの縦を抽出する関数について質問です。 別途画像を添付しましたので参照ください。 目標比(残高)という一番右のセルに 現在の残高(1ヶ月目~12ヶ月目)まで横に入力した値のうち 一番最古(現在から見て一番直近)の値と 目標を比較する為に残高を表示させたいのです。 月が変われば新しいデータを入力するのですが その時点で目標比(残高)は、一番最古の値に「自動的に変わってほしい」のです。 どのような関数を入れればよいのかご指導ください

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

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

7行目のデータでH列からS列に入力されている一番右のセルの値を表示させたいなら、以下のような数式で表示することができます(適宜空白処理などをしてください)。 =INDEX(7:7,MAX(INDEX((H7:S7<>"")*COLUMN(H7:S7),)))

14dai
質問者

お礼

大変参考になりました(^_^; また質問するかもしれませんが、よろしくご指導ください!

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

最古と言わず、その行で入力された一番右の列の(その行の)セルの値のことだろう(途中で空白セルがありえる場合)。関数では行方向でも、列方向でも手こずる課題だ。 ーー VBAのユーザー関数を使うとすっきりする。 この例で、S列以左で空白でない最も右の列 標準モジュールに下記をコピペ。 Function toleft(a As Range) Application.Volatile toleft = Range("s" & a.Row()).End(xlToLeft).Column End Function これは例えばS1を選択してENDキー+←キーを押す操作のマクロの記録です。 シートのT1に=toleft(A1)と入れる。 ーー 値を採るなら Function toleftV(a As Range) Application.Volatile toleftV = Range("s" & a.Row()).End(xlToLeft) End Function 関数は =toleftv(A1) ーー 関数では左列から順次空白無く埋まっていかない場合は、配列数式しかないだろうと思う。

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

こんばんは! すでに回答は出ていますので、参考程度で T7セルに =IF(COUNT(H7:S7)=0,"",INDEX(H7:S7,,MAX(IF(H7:S7<>"",COLUMN(A1:L1))))) これは配列数式になってしまいますので、この画面からコピー&ペーストしただけではエラーになると思います。 T7セルに貼り付け後、F2キーを押す、またはT7セルをダブルクリック、または数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定してください。 数式の前後に{ }マークが入り配列数式になります。 以上、参考になればよいのですが・・・m(__)m

  • nattocurry
  • ベストアンサー率31% (587/1853)
回答No.1

すみません、作業内容がよく分かりません。 月が変われば新しいデータを入力するんですよね。 それは、どこのセルに入力するのですか? 添付画像の例だと、7ヶ月目と8ヶ月目に入力されているから、つぎは9ヶ月目に入力するということで良いのでしょうか? となると、その後いつまで経っても、最古は7ヶ月目だと思うのですが・・・ もっと、その表のことを知らない人でも分かるような説明をお願いします。 入力値は常に増え続けるとか、減り続けるとか、増えたり減ったりするとか、っていうのも結構重要だったりします。

14dai
質問者

補足

最古と言う表現がわかりずらくてすいません。 一番最古 → 一番最後に入力した → 直近と言う意味です。 この票では7ヶ月の次に8ヶ月を入力しましたので8ヶ月の列の値が 目標比の残高に表示されたい値です。 今月は 一番右の「目標比の残高」に「8ヶ月の列の値」 来月は 「目標比の残高」に「9ヶ月の列の値」が表示されたいのです。

関連するQ&A