テーマ:プログラミングあれこれ(230)
カテゴリ:VBA
今回は絞り込んだデータを一括で編集する
方法を記載する。 -------------------------------------- ①Range.AutoFilter ②.End(xlUp)、.End(xlDown) -------------------------------------- 112行目の指定商品で記入された商品を 絞り込んで、その横の金額で一括設定し 絞り込みを解除して表示する、というような 動きにしてみた。 ※メロンが大豊作だったという設定のもと、 全ての店で売られるメロンを無料にしてみる。 ![]() ソース Sub setAlllPrice() ' オートフィルタクリア Range("B114").AutoFilter ' 指定商品による絞り込み Range("B114").AutoFilter 2, Range("C112").Value ' 絞り込み後データを全て指定の値段にする Range(Range("D115"), Cells(Rows.Count, 4).End(xlUp)) = Range("E112").Value ' オートフィルタクリア Range("B114").AutoFilter End Sub 結果 ![]() 全てのメロンの値段が無料になっている ことが確認できた。 Range(Range("D115"), Cells(Rows.Count, 4).End(xlUp)) について、Rangeが入れ子になっており、 少し複雑なので分解して書いてみると、、 Rangeは、Range(行,列)で指定するので、 Range(Range("D115"), Cells(Rows.Count, 4).End(xlUp)) Range("D115")は 結局の所、115行目というだけのこと。 Cells(Rows.Count, 4).End(xlUp)は、 Rows.Countがエクセルの最終行を表す関数 (すなわち1048576行)なのでCells(1048576, 4)となる。 さらにその場所から、.Endプロパティによりデータの終端を探す。 終端といっても下に行くだけでなく、この場合は、 .End(xlUp)の通り、UPということなので、 Cells(1048576, 4)からデータのある個所まで上へさかのぼれ ということになる。 ※.End(xlDown)だったら逆に、データのある個所まで下へ降りろ、ということ。 さかのぼった結果、見つかったデータが最終データ となるので、上記画像の場合、D124が最終データ となる。 よって Range(Range("D115"), Cells(Rows.Count, 4).End(xlUp)) は Range("D115:D124") ということになる。 こうして晴れて絞り込みを行ったデータのみを 一括で変更することができた。 今回で一通り絞り込みについての内容が記載できたので、 次回からはデータの並べ替えについて記載してみようと思う。 お気に入りの記事を「いいね!」で応援しよう
Last updated
2020.09.09 21:29:12
コメント(0) | コメントを書く
[VBA] カテゴリの最新記事
|