【関数・プロパティ設定をつかう】
5 文字列の指定位置から1文字を取得
6 文字列の文字数を取得
7 文字列のループで1文字ずつ分解
8 文字が入っているセルの最大行を取得
9 文字が入っているセルの最大列を取得
10 行のループで複数の文字列を連続分解
11 列のループで複数の文字列を連続分解
「今回は、Excel VBA/マクロによってExcelシートの中で文字が入っているセルの最大行を取得してみましょう。
Excel VBA/マクロには文字が入っているセルの終端セルを一瞬で検索してくれる便利なプロパティがあります。
それが、Endプロパティです。Endプロパティの構文は、次のようになります。」
「この表のキーボード操作を実際にやってみましょう。
予め、次のようなExcelシートを用意します。
ExcelシートのセルA12を選択してください。」
「ExcelシートのセルA12が選択されている状態で、キーボードのCtrlと↓を同時に打ってみてください。」
「セルA1048576が選択されました。」
「これは、セルA12から下方向に文字が入っているセルの終端セルを探そうとしたことによるものです。
セルA12から下方向には文字が入っているセルが無かったため、A列・1048576行(Excelの最大行)の
セルA1048576が選択されています。
それでは、次に、ExcelでセルA1048576が選択されている状態で、キーボードのCtrlと↑を
同時に打ってみてください。」
「セルA12が選択されました。」
「これは、セルA1048576から上方向に文字が入っているセルの終端セルを探し当てたことによるものです。
セルA1048576から上方向に文字が入っているセルを検索したとき、が最初にヒットしたため、
セルA12が選択されています。」
「それでは、ExcelシートのセルA1を選択してください。」
「ExcelシートのセルA1が選択されている状態で、キーボードのCtrlと→を同時に打ってみてください。」
「セルXFD1が選択されました。」
「これは、セルA1から右方向に文字が入っているセルの終端セルを探そうとしたことによるものです。
セルA1から右方向には文字が入っているセルが無かったため、XFD列(Excelの最大列)・1行のセルXFD1が
選択されています。
次に、ExcelシートのセルXFD1が選択されている状態で、キーボードのCtrlと←を同時に打ってみてください。」
「セルA1が選択されました。」
「これは、セルXFD1から左方向に文字が入っているセルの終端セルを探し当てたことによるものです。
セルXFD1から左方向に文字が入っているセルを検索したとき、A1が最初にヒットしたため、
セルA1が選択されています。」
「さっきは、最後の行を調べるために、キーボード操作で行番号を検索しましたが、
毎回キーボード操作で行番号を検索していては手間がかかるし時間もかかるので、
コンピュータに計算してもらうようにしましょう。
Endプロパティをつかうことで、文字が入っているセルの終端セルを一瞬で検索してくれます。
Endプロパティの構文は、次のようになります。」
「Endプロパティでは、引数:Directionに、検索方向を示す定数として、
『xlUp』を入れると上方向へ検索しながら、
『xlDown』を入れると下方向へ検索しながら、
『xlToLeft』を入れると左方向へ検索しながら、
『xlToRight』を入れると右方向へ検索しながら、終端セルを取得します。
先ず、ExcelでセルC14を選択してください。」
「End(xlUp)プロパティをつかって
A列の終端のセルを選択してみましょう。
Range("A65536").End(xlUp).Select
と記述します。」
Sub 最大行選択_Endプロパティ_Selectメソッド()
Range("A65536").End(xlUp).Select
End Sub
「始点のセルが『A65536』となっています。
A列はわかるのですが、65,536行となっているのはなぜですか?」
「この行数は、Excel2003までの最大行数である65,536行をつかっているだけです。
通常は、65,536行を最大行数としても問題ないのですが、
もしもこれを超えるデータ行をマクロで扱うときは、1,048,576行を最大行数としてください。
それでは、このマクロを実行してみましょう。」
「セルA12が選択されました。」
「これは、セルA65536から上方向に文字が入っているセルの終端セルを探し当てたことによるものです。
セルA65536から上方向に文字が入っているセルを検索したとき、A12が最初にヒットしたため、
セルA12が選択されています。」
「それでは、End(xlUp)プロパティとRowプロパティを組み合わせて、
A列の文字が入っているセルの最大行を取得してみましょう。」
「Rowプロパティとは、対象セルの行番号を取得するプロパティです。
Range(セル番地).End(xlUp)プロパティとRowプロパティを組み合わせることで、
対象列の文字が入っているセルの最大行を取得することができます。
ExcelのA列の終端セルの行番号を取得して、セルB1に格納してみましょう。」
「早速、End(xlUp)プロパティとRowプロパティを組み合わせてつかってみます。
A列の終端セルの行番号を取得して、セルB1に格納するのだから、
Range("B1").Value = Range("A65536").End(xlUp).Row
これで良いのでしょうか。」
Sub 最大行取得_End_Rowプロパティ()
Range("B1").Value = Range("A65536").End(xlUp).Row
End Sub
「それでは、そのマクロを実行してみましょう。」
「ExcelのA列の文字が入っているセルの最大行番号が取得され、セルB1に『12』と書きこまれました。」
「これはExcelのA列の文字が入っているセルの最大行は、『12』行目ということです。」
演習:ExcelのB列の終端セルの行番号を取得して、セルC1に格納
Sub 最大行取得_End_Rowプロパティ()
Range("C1").Value = Range("B65536").End(xlUp).Row
End Sub
「このように、Range(セル番地).End(xlUp)プロパティとRowプロパティを組み合わせることで、
対象列の文字が入っているセルの最大行を取得することができます。」
◇もしもPython-xlwingsだったら、
2023-03-19
2021-12-20
2021-12-12