Excelのこととか色々

Excel のこととか楽天とか いろいろ書いてみます・・・

【VBAスタンダードに挑戦!】オートフィルタ絞り込み後操作(End/AutoFilter解除/絞込み解除)

【VBAスタンダードに挑戦!】

f:id:tuna-kichi:20200614200940p:plain

 

本日の5分勉強の内容

 

 

********************************************************

End

・データ、または空欄が途切れるところまでカーソルを移動させる

・Ctrl + 矢印キー と同じ動き

・最終行、最終列を判別することができる

Range("A1"). End(xlDown).Row
 セルA1からデータ/空欄が途切れるセルまで下がる
 途中で空欄がある場合や、セルが結合されている場合には
 最終行を取得できない

 

Cells(Rows. Count, 1). End(xlUp).Row
 列Aの最終行(1,048,576行目)からデータ/空欄の途切れるセルまで上がる

 

Range("A1"). End(xlToRight). Column
 セルA1からデータ/空欄の途切れるセルまで右に移動する
 途中で空欄がある場合や、セルが結合されている場合には
 最終列を取得できない

 

Cells(1, Columns. Count). End(xlToLeft). Column
 1行目の最終列(XFD/16384列目)から
 データ/空欄の途切れるセルまで左に移動する

 

 

 

                      

 

f:id:tuna-kichi:20200818090354p:plain

   f:id:tuna-kichi:20200819084102p:plain

f:id:tuna-kichi:20200819083658p:plain

 

 

Dim LastR As Long

LastR = Cells(Rows.Count, 1).End(xlUp).Row '列Aの最終行を取得する

 

'値段の列から1000円以上、4000円未満で絞り込む
Range("A1").AutoFilter 3, ">1,000", xlAnd, "<4,000"

 

'対象の商品に割引価格を入力する
Range(Cells(2, 4), Cells(LastR, 4)) = "800"

 

'絞込みの解除
Range("A1").AutoFilter 3

                      

 

最終行の取得には End(xlUp) を良く使います。

でも、Cells(Rows. Count, 1).Row と End(xlUp) を忘れてしまい、

100万行分のループで終わらない ということも良くあります・・・

 

途中にデータがあったり、なかったり、セルが結合されていたり、

どの行、列で計測するか最初に判断が必要です。

 

AutoFilter の設置/解除は、Range("A1"). AutoFilter

絞込みの解除は、Range("A1"). AutoFilter 1

で、できます。

 

当たり前かもしれませんが、絞込みの解除は絞り込みをした列に対して

実行するので、3列目で絞り込んだのに、Range("A1"). AutoFilter 1 

を指定しても解除されません。

 

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/