• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文: エクセル関数式により、列ごと最後尾と最後尾からの2行目の値を抜き出す)

エクセル関数式で列ごとの最後尾と最後尾から2行目の値を抜き出す方法

このQ&Aのポイント
  • エクセル関数式を使用して、表の各列ごとに最後尾と最後尾から2行目の値を抜き出す方法を教えてください。
  • 表の各列に入力されている値から、空白や0以外の値と最後尾の数字から2行目の値を抜き出すためのエクセル関数式の方法を教えてください。
  • エクセル関数式を利用して、表の各列の最後尾と最後尾から2行目の値を取得する方法を教えてください。

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

  • ベストアンサー
回答No.2

私のやり方だと、「ゼロより大きい」という論理値と行番号をかけ 算した配列を生成し、その最大値および三番目に大きい値が目的の 行である。という手口を使います。こちらの仕様ではE112が0で あったときにE111が採用されます。 最後尾 =index(A1:A200,large(index(row(A4:A200)*(A4:A200>0),0),1)) 最後尾から2つ上、ただし0は除外 =index(A1:A200,large(index(row(A4:A200)*(A4:A200>0),0),3))

kei__2000
質問者

お礼

 回答ありがとうございます。このやり方ですと0でもエラーが出ずに大変きれいです。ありがとうございました。

その他の回答 (5)

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

こんにちは! 一例です。 ↓の画像で説明します。 H2セルに =INDEX(A$1:A$116,LARGE(IF(A$1:A$116>0,ROW($A$1:$A$116)),1)) H3セルに =INDEX(A$1:A$116,LARGE(IF(A$1:A$116>0,ROW($A$1:$A$116)),3)) どちらの数式も配列数式になってしまいますので、 この画面からコピー&ペーストしただけではエラーになると思います。 セルに貼り付け後、F2キーを押す、又は貼り付けセルでダブルクリック、又は数式バー内で一度クリックします。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定してください。 数式の前後に{ }マークが入り配列数式になります。 最後にH2・H3セルを範囲指定し、H3セルのフィルハンドルで列方向にコピーすると 画像のような感じになります。 以上、参考になれば幸いです。m(__)m

kei__2000
質問者

お礼

 回答ありがとうございます。うまくできました。大変助かりました。ありがとうございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.5

No4です。範囲の指定が間違っていましたね。 =VLOOKUP(10^6,IF(A4:A200=0,"",A4:A200),1)  Ctrl+Shift+Enterで ={VLOOKUP(10^6,IF(A4:A200=0,"",A4:A200),1)} こんな感じになると思いますが、状況に合わせて編集してください。

kei__2000
質問者

お礼

 回答ありがとうございます。訂正文をいただき、大変参考になりました。ありがとうございました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.4

配列関数で作成してみました A2セル 最後の行の値(0を除く) =VLOOKUP(10^6,IF(B4:B100=0,"",B4:B100),1) の式をコピィして Ctrl+Shift+Enter で決定させます。 式が {}で囲まれると思います。 結果が表示されたら、右へコピィ A3セル 最後の行から2行上 =INDEX(B4:B100,MATCH(10^6,IF(B4:B100=0,"",B4:B100))-2) 同様に Ctrl+Shift+Enter 右へコピィしてみてください。

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

0が含まれる場合には面倒になりますね。 最後の0が3行目であっても良い場合でしたらA2セルに次の式を入力してE2セルまでオートフィルドラッグします。 =IF(INDEX(A4:A1000,COUNT(A4:A1000))>0,INDEX(A4:A1000,COUNT(A4:A1000)-2),IF(AND(INDEX(A4:A1000,COUNT(A4:A1000))=0,INDEX(A4:A1000,COUNTA(A4:A1000)-1)>0),INDEX(A4:A1000,COUNT(A4:A1000)-3),IF(AND(INDEX(A4:A1000,COUNT(A4:A1000)-1)=0,INDEX(A4:A1000,COUNTA(A4:A1000)-2)>0),INDEX(A4:A1000,COUNT(A4:A1000)-4),IF(AND(INDEX(A4:A1000,COUNT(A4:A1000)-2)=0,INDEX(A4:A1000,COUNTA(A4:A1000)-3)>0),INDEX(A4:A1000,COUNT(A4:A1000)-4),IF(AND(INDEX(A4:A1000,COUNT(A4:A1000)-3)=0,INDEX(A4:A1000,COUNTA(A4:A1000)-4)>0),INDEX(A4:A1000,COUNT(A4:A1000)-5),"")))))

kei__2000
質問者

お礼

 回答ありがとうございます。大変お手数をおかけしました。参考にさせていただきたいと思います。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

A列の最後尾と最後尾から1つ前のは以下の様な式で取り出します。 ただし、0または空白しかない列ではエラーになります。 =OFFSET(A1,SUMPRODUCT(MAX(ROW(A5:A116)*(A5:A116<>0)))-1,0) =OFFSET(A1,SUMPRODUCT(MAX(ROW(A5:A116)*(A5:A116<>0)))-2,0)

kei__2000
質問者

お礼

 回答ありがとうございます。うまくできました。大変助かりました。ありがとうございます。

関連するQ&A