アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルマクロ初心者です。
同じような質問ばかりで申し訳ありませんが。
オートフィルターを使用する際の最終行取得の構文を教えていただきたいです。

以下のように記載してみましたが、うまくいきません。

Dim i As Long
i = Range("C" & Rows.Count).End(xlUp).Row
Selection.AutoFill Destination:=Range("C2:C" & i), Type:=xlFillDefault

また、マクロの基本かと思いますが、行可変の場合の最終行の取り方のコツがあれば
ご教授いただきたいです。
変数宣言「Dim As...」を記載して、毎回変数を設定して取得するのが適しているのでしょうか。

アドバイスあれば、ぜひよろしくお願いいたします。

A 回答 (3件)

こんばんは、自己解決されたのでしょうか?


>以下のように記載してみましたが、うまくいきません。
どのように上手くいかないのか、分かりません。

示されているコードを拝見すると、限られた条件でしか実行できないと思いますが、、
そのように、処理されているのでしょうか?
i = Range("C" & Rows.Count).End(xlUp).Row
Selection.AutoFill Destination:=Range("C2:C" & i), Type:=xlFillDefault
C2の値をCの最終行までオートフィルします。

つまり、実行前にC2セルをselectしている必要があります。また、C列3行以降に値が入っている必要があります。
この条件の不備で上手くいかないのではないでしょうか?

Selection.AutoFillを使う事があまり無いので分かりませんが、
上のコードは、(VLOOKUPの数式をオートフィルしたい場合)
i = Range("C" & Rows.Count).End(xlUp).Row
Range("C2:C" & i).Formula = Range("C2").Formula

この様に書く事も出来ます。
>B列と別ファイルをVLOOKUPの結果をC1セルに表示させています。 C2セルの間違いですよね?
>VLOOKUPの結果 と言う事は数式ではないか、、一応、数式と値に対応して(数式でなく値でも入力されます)
*シートを省略していますが、シートを指定するようにしてください。

この場合、上記条件が無くても実行されます。
但し、オートフィルも参照式も見出し行が1行目にあり、C2が空白の場合、見出しに空白が入力されます。
VBAでVLOOKUPの結果を出しているなら、計算する時、出力してしまえば、、、と思います
別ブックを開いている場合
For i = 2 To Range("C" & Rows.Count).End(xlUp).Row
 Range("C" & i) = WorksheetFunction.VLookup _
 (Range("B" & i), Workbooks("別ファイル名.xlsx").Worksheets("対象シート名").Range("A2:B48"), 2, False)
Next
それました。


>行可変の場合の最終行の取り方のコツがあれば
i = Range("C" & Rows.Count).End(xlUp).Rowで良いと思いますが、
最終行の意味合いで色々方法があります。

~ .End(xlUp).Row は良く使われる方法です。
実際の動きは、何もない列でCtrl+↓キーを押したのがEnd 行 
そこの位置でCtrl+↑キーを押したのがxlUp .Rowはその行№となります。
問題点は、何も値のない列でこれを実行すると1が返ります。キー操作でやると確かに1行目ですから当然です。
1行目に値を入れて実行するとこれも1が返ります。これも、キー操作でそうなるので、当然ですが、
一行目が使われているかどうかを判断するには、向かない事になります。

最終行の意味合いで変わりますので、
情報記事は多くありますので検索などをして確認してみてください。
一応参考サイト http://www.niji.or.jp/home/toru/notes/8.html
    • good
    • 0

C列を基準に最終行を求めているようですが、B列を基準に求める必要があるのでは?

    • good
    • 0

オートフィルター(AutoFilter)ではなく、オートフィル(AutoFill)ですよね?


ちなみにやりたいことは何でしょうか?
例えば C2 セルの値を選択している部分にコピーするとかですか?
    • good
    • 0
この回答へのお礼

GooUserラック様
コメントありがとうございます。
失礼しました、オートフィル(AutoFill)でした。

やりたいこととしては、
B列と別ファイルをVLOOKUPの結果をC1セルに表示させています。
参照値がある最終行まで、C列にオートフィルでドラッグして結果を表示させたいです。
なお、最終行は可変で設定したいです。

お礼日時:2020/02/18 21:36

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

このQ&Aを見た人はこんなQ&Aも見ています