• ベストアンサー

列の中の一番下のセルの内容を特定のセルに移したい

例えば、 A B C D E F 1 10 20 30 40 140 2 50 60 70 80 3 90 100 110 120 4 130 140 150 160 5 これらのようにセルが記録されているときには、 B4の内容をF1に表示させて、 5行目に 5 170 180 190 200 とデータが記録されているときには F1に「180」を表示させたいのです。 ちなみに数千行に渡るときにでも同様に一番下の行のデータを 特定のセルF1に表示させたいのですができるものでしょうか? F1の中のセルの関数もしくはマクロでもかまわないのですが、 ご教示いただければと思います。

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

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

Sub Test() Dim i i = Cells(Rows.Count, 2).End(xlUp).Row Range("F1").Value = Range("B" & i).Value End Sub でしょうか?

nobunorinobu
質問者

お礼

回答ありがとうございます。 多少アレンジさせてもらってVBAマクロで正常に動きました。 ありがとうございました。

その他の回答 (6)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.7

◆B列の最終行の数字をF1に表示であれば F1=LOOKUP(10^10,B:B)

nobunorinobu
質問者

お礼

VBAでも関数(数式)でも同様にやってみましたが、 色々方法があるものですね。 回答ありがとうございました。

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

配列数式で, B列を忠僕する場合 =INDIRECT("B"&MAX((B2:B20<>"")*(ROW(B2:B20)))) と入れて、SHIFT+CTRL+ENTER 1-20行で、データのある最下行データだ取れます。 =INDIRECT("B"&MAX((B2:B20<>"")*(ROW(B2:B20)))) でも同じです。 ーーー VBAで Sub test01() ActiveSheet.Range("F1") = Range("B2:B100").SpecialCells(xlCellTypeBlanks).Item(0) End Sub でも良いようです。

nobunorinobu
質問者

お礼

VBAでも関数(数式)でも同様にやってみましたが、 色々方法があるものですね。 回答ありがとうございました。 「配列数式」というのは初めて知りました。 今後も使わせていただきます。 ありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.5

=INDEX(B1:B5000,SUMPRODUCT(MAX((B1:B5000<>"")*ROW(B1:B5000)))) でB列の最下行の値が求められます

nobunorinobu
質問者

お礼

VBAでも関数(数式)でも同様にやってみましたが、 色々方法があるものですね。 回答ありがとうございました。 「配列数式」というのは初めて知りました。 今後も使わせていただきます。 ありがとうございました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.4

質問例を見ると、下の行に行くほど数値が増えて言っているようですが、減ることもありますか? 常に増えているのであれば、 =MAX(B:B) だけで可能かと思います。 多分こんな簡単な事ではないでしょうが、一応参考として。

nobunorinobu
質問者

お礼

数値はセルごとに与えられる関数により求められる規則的な値です。 でも昇順にソートされているわけではありません。 色々方法があるみたいですね。 回答ありがとうございました。

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

表の中の値は全て数値なのでしょうか。 とりあえず文字列も含め、ブランクでない一番下のデータを表示させる式を作ってみました。 =OFFSET($B$1,MAX(ROW(B1:B10000)*(NOT(ISBLANK(B1:B10000))))-1,0) ★配列数式なのでCtrl+Shift+Enterで確定させてください。 昇順にソートされているのであれば、もう少し簡単になると思いますが。

nobunorinobu
質問者

お礼

表の中の値は関数で求められる数値です。 VBAでも関数(数式)でも同様にやってみましたが、 色々方法があるものですね。 回答ありがとうございました。 「配列数式」というのは初めて知りました。 今後も使わせていただきます。 ありがとうございました。

noname#35109
noname#35109
回答No.2

関数であれば, F1セルに, =LOOKUP(MAX(B:B),B:B) と書くと,F1 セルに B列の最終行のセルの値が返ります。 結局, LOOKUP 関数の 第一引数は MAX(B:B) でなくても, B列に存在する数値であれば,何でも良いのですが, 最大値に対応する数値は少なくとも1つは存在すると思うので, MAX(B:B) にしています。

nobunorinobu
質問者

お礼

関数(数式)でも同様にやってみましたが、 色々方法があるものですね。 回答ありがとうございました。