- ベストアンサー
Excelの縦を抽出する関数について質問です。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
7行目のデータでH列からS列に入力されている一番右のセルの値を表示させたいなら、以下のような数式で表示することができます(適宜空白処理などをしてください)。 =INDEX(7:7,MAX(INDEX((H7:S7<>"")*COLUMN(H7:S7),)))
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
最古と言わず、その行で入力された一番右の列の(その行の)セルの値のことだろう(途中で空白セルがありえる場合)。関数では行方向でも、列方向でも手こずる課題だ。 ーー 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)
こんばんは! すでに回答は出ていますので、参考程度で 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)
すみません、作業内容がよく分かりません。 月が変われば新しいデータを入力するんですよね。 それは、どこのセルに入力するのですか? 添付画像の例だと、7ヶ月目と8ヶ月目に入力されているから、つぎは9ヶ月目に入力するということで良いのでしょうか? となると、その後いつまで経っても、最古は7ヶ月目だと思うのですが・・・ もっと、その表のことを知らない人でも分かるような説明をお願いします。 入力値は常に増え続けるとか、減り続けるとか、増えたり減ったりするとか、っていうのも結構重要だったりします。
補足
最古と言う表現がわかりずらくてすいません。 一番最古 → 一番最後に入力した → 直近と言う意味です。 この票では7ヶ月の次に8ヶ月を入力しましたので8ヶ月の列の値が 目標比の残高に表示されたい値です。 今月は 一番右の「目標比の残高」に「8ヶ月の列の値」 来月は 「目標比の残高」に「9ヶ月の列の値」が表示されたいのです。
お礼
大変参考になりました(^_^; また質問するかもしれませんが、よろしくご指導ください!