プロが教える店舗&オフィスのセキュリティ対策術

値が入力してあるBook1から、マクロを使用して新しいBook2に値を抽出する作業を行っています。
下記のように、

dstSheet.Cells(dstRow, 1).Value = srcSheet.Range("A1").Value 'ID

で、"A1"に入力されている値を取得しています。

質問したいのは、"B1~B5"に入力されている値のうち、行が一番下の値を取得する方法です。"B1~B5"については、全てに値が入っている場合もあれば、"B1"にしか値がない場合があります。("B1~B3"に値が有る場合は、"B3"の値を取得する。)

よろしくお願いいたします。

A 回答 (5件)

>"B3~B10"のような領域から...



B3~B10のようにデータが入力されるセル範囲が固定され、かつ、その範囲内で最下行の値を求めるのであれば

Debug.Print Cells(Range("B10").End(xlUp).Row,"B").Value
あるいは
Debug.Print Range(Range("B10").End(xlUp).Address).Value

の様にすればOKです。一方、セル範囲が固定されないのであれば、ご提示いただいた条件では不可能です。

先の回答は「B1~B5というセル範囲は例示であり、場合によってはB1~B1200みたいにデータ範囲が拡張されることがある」との前提にたっていました。


>勉強不足の質問で申し訳ないのですが...

いいえ、とんでもないです。私も質問を投稿しますし、また、回答することが自分のスキルアップになっています。頑張って下さい。
    • good
    • 0

Debug.Print Cells(Range("B65536").End(xlUp).Row,"B").Value



でよいかと思います。

この回答への補足

ご回答ありがとうございます。
説明不足でしたので、補足致します。

Book1のB列には、取得したい値以外の情報も含まれているため、ご回答いただいた方法では少し無理があるようです。

実際の作業では、、"B3~B10"のような領域から入力されている値のうち、一番下に入力されている値を取得すような形になります。

勉強不足の質問で申し訳ないのですが、他に良い方法がありましたらよろしくお願いいたします。

補足日時:2005/01/21 10:14
    • good
    • 0

#1です。



提示したセンテンス

Range("B6554").End(xlup)

は、もちろん、終わりに、 「.select」とか、「.activate」 などのメソッドを入れてください
    • good
    • 0

一足飛びにうまくやる方法はちょっと思いつきません。


とりあえず、こんな方法でいいのではないでしょうか
For Each x In range("B1:B5")
If x.Offset(1).Value = "" Then Exit For
Next
bottomValue=x.Value
    • good
    • 0

勉強不足で提示した式


dstSheet.Cells(dstRow, 1).Value = srcSheet.Range("A1").Value 'ID
の意味を把握できていませんけど

Range("B6554").End(xlup)
として、最終のデータ行をたどる というのは、いかがでしょう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!