• ベストアンサー

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

例えば、 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/17068)
回答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
質問者

お礼

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

関連するQ&A

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

  • 【マクロ】クリックすると空白を含む列を非表示に

    上司にExcelのデータが見づらいと言われて困っています。 下記のようなマクロやVBAを教えていただけないでしょうか? 例えば、 A2のセルをクリックすると、その行(2行目)から空白セルを検索して、そのセルを含む列を非表示にして、データが入っている列だけを表するようなマクロってないでしょうか? (要は、C2とE2が空白セルのとき、A2をクリックして、A/B/D/F~の列だけ表示されるようになるマクロです。 同様に3行目でも、空白セルがB3、C3なら、A3をクリックした時、A/D/E…列だけ表示されて、B・C列が非常時になるような。) 似たような機能があれば、A2クリックでなく別にボタン等を作っても構いません。 ややこしくて、申し訳ございませんが、本当に困っているので、 どうかよろしくお願いいたします。

  • <文字列マクロについて>

    <文字列マクロについて> 皆さま お力を貸して下さい。 初心者で、何もわからず書いておりますがすみません。 下記の2つのマクロを教えて下さい。 ?横に並んだ「ある行」に在るデータを「列」に変換し、  指定した数だけ並べる    あいうえお    ←A1セルからE1まで5列(これは状況により変わる)       ↓(マクロ実行:3行同じ数だけ並べるという指定)  あ        →A1セルから下にひたすら、同じ文字が続き順に並ぶ  あ  あ  い  い  い  う  う        →A1セルから下に並べる(3行は指定できれば別の数字にも変えたい  う  え  え  え  お  お  お ?規則的に並んだデータのまとまりをセットで移動する。  例だと5つの塊(これは変数とおきたい)    あ A              a  い B              b  う C               c   え D               d  お E              e    ↓(マクロ実行)  あ  い  う  え  お  A  B  C  D  E      ・  ・  ・  ・    a b c d e    

  • ある値を越えたセル番地の取得関数

    ご教示ください。 セルA5から下に月の日付を入力しています。 またセルB5からE5には、それぞれ時間が入力されていて、合計をSUM関数でF5に計上しています。 BからEに入る時間は毎月変わってきますが、合計時間ある時間を越えたセルの値を取得するような関数はあるのでしょか。 (合計はBCDEと順に足し、それに次の行のBCDEと足していきます。) 例 次の場合で、10時間を越えた初めてのセルをF4に取得したい     場合は、D6を表示してくれるような関数です。    A  B   C   D   E   F    4                   D6 5 1日 1:15 2:00 2:30 1:45  7:30 6 2日 1:30 1:45 4:15 3:45 11:15 7 3日 ・      ・  どなたか、よろしくお願いいたします。        

  • Excel:決まったセルから常にあるセルの最終行の引き算

    添付画像のA7~E7列に数値を入力していき、F列にB~Eの合計がSUM関数により表示されます。 必要に応じ、8行目以降にデータは累積していきます。 D4セルにC4からF列の常に最終行の引き算の数式を入れたいと思っています。 イメージは D4=C4-(F列の最終行)というものですが、具体的にどういう数式をD4セルに当てはめればよいでしょうか? 御教示宜しくお願い致します。

  • エクセルで空白セルを寄せたい

    エクセル2002使用です VBAは使わずに関数だけで空白セルがあるセルを詰めて表示したいのですが・・・   A|B|C|D|E|F|G 1 あ い う え お か き 2 ○   ○ ○   ○ の表を   A|B|C|D|E|F|G 1 あ う え か  2 ○ ○ ○ ○ のように表を書き換えたいのです。 1行目には必ず文字が入力されています。 2行目には入力されているセルと空白セルが不定期に入力されています。 2行目のセルが空白ならば、1行目のセルも削除して左へ詰めて 表を転記したいのです。 よろしくお願いします。

  • EXCELで特定の列を指定しての行と列を入れ替える方法がありますでしょうか?

    EXCELで特定のセルの行と列を入れ替える方法がありますでしょうか? 例えば、下記の様なデータがあったとします。 列1│列2 ──┼── D │3 ──┼── D │5 ──┼── D │7 ──┼── E │2 ──┼── E │4 ──┼── E │6 ──┼── E │8 これを関数を使って自動でこのように並べ替えたいのです。 関数のイメージとしては、”列1がDの時は、行と列を入れ替える”等といった内容です 結果としてこんなデータになって欲しいのです。 D│3│5│7│ ─┼─┼─┼─┼─ E│2│4│6│8 どなたか良い方法がありましたら是非教えて下さい。 どうか宜しくお願いします。

  • 条件を満たす行の、特定の列における最小値

    以下のようなスプレッドシート(Excel)があります。    [A列] [B列] [C列] [D列] [E列] [1行]資材コード メーカー 単価 平均 最安 [2行]T1111 A 311 [3行]T1211 A 411 [4行]T1311 A 311 [5行]T1111 B 299 [6行]T1211 B 500 [7行]T1311 B 312 [8行]T1111 C 300 [9行]T1211 C 280 [10行]T1311 C 400 D列(D2~D10)には、 同じ資材コードの単価の平均が入ります。 これは、 SUMIF(A$2:A$10,A*,C$2:C$10)/COUNTIF(A$2:A$10,A*) (*には当該行番号が入る。) で、表現できました。 次にE列(E2~E10)には 同じ資材コードのもののうち、 最安となる単価を表示させたいのですが、 どう関数を組み合わせるのが、スマートなのかわかりません。 たとえば、E2セル、E7セル、E11セルは 資材コードT1111になっている行のうち、 単価(C列)が最低となる時の値を表示するようにしたいので、 C2セル=311、C7セル=312、C8セル=800のうち、最低である311が E2セル=311、E7セル=311、E8セル=311 にそれぞれ表示されるようにしたいのです。 わかりにくい説明で申し訳ありませんが、 疑義があれば、適宜補足しますので、指摘してください。 よろしくお願いいたします。

  • Excelで複数の結果を一つのセルに表示させる方法

    データ    A B C D E F G ・・・  イ * *   *  ロ   *  ハ  *    * から、行ごとに集計して、「*」のあるアルファベットを一つのセルに表示させるということをしたいのですが、良い方法が見つかりません。 例えば、イの行であれば[A B D]、ハの行であれば「B E」という感じです。 「LOOKUP関数」だと、最初にHITしたものしか返ってきません。 一つではなく、複数欲しいのです。 Excelに不慣れな者ですが、複雑な式であっても何とか頑張りたいと思います。 どなたかご教示お願いします。

  • 【エクセル】特定の文字列(番号)の行だけ抽出したい

    現在資料を作っていて、またもや困ったことがあったので教えてください。 特定の文字が含まれる行のデータを抽出するにはどうしたらいいのでしょうか。 具体的にいうと ____|A|B|C|D|E| [01]|F|1|0|3|5| [02]|G|0|2|5|7| [03]|H|0|3|4|8|    中略 [21]|F|0|0|9|6| [22]|G|6|4|5|1| [23]|H|3|3|2|2|    中略 [31]|F|2|2|4|6| [32]|G|5|3|7|9| [33]|H|8|2|6|4|    以下略 *[]の中身は行番号 一番上段のA B C D Eは列の軸 |はセルの区切りを示している のような表でGのBのところ(行番号が10n+2のところのA列)だけのデータを合計したいのです。 つまり上の表でいえば =A2+A22+A32+A42+A52…(=0+6+5+…)ということをしたいのですが 数が600行近くあるので手入力だとかなり面倒くさいのです。 SUM関数を使うのかなとも思いましたが、それでもセルの指定の面倒くささは変わらないし… 何か簡単にできるようにする方法がありましたらご教授お願いします。

専門家に質問してみよう