【関数・メソッド・プロパティ設定をつかう】

5 文字列の指定位置から1文字を取得

6 文字列の文字数を取得

7 文字列のループで1文字ずつ分解

8 文字が入っているセルの最大行を取得

9 文字が入っているセルの最大列を取得

10 行のループで複数の文字列を連続分解

11 列のループで複数の文字列を連続分解

文字が入っているセルの最大行を取得

 今回は、Python-xlwingsで文字が入っているセルの最大行を取得してみます。

 Python-xlwingsには文字が入っているセルの終端セルを一瞬で検索してくれる便利なメソッドがあります。

 それが、endメソッドです。

Img7_3_21

 endメソッドでは、引数:Directionに、検索方向を示す定数として、

 'up'』を入れると上方向へ検索しながら、

 'down'』を入れると下方向へ検索しながら、

 'left'』を入れると左方向へ検索しながら、

 'right'』を入れると右方向へ検索しながら、

 終端セルを取得します。


 先ず、キーボード操作でセルD13を選択します。

Img7_3_22

 end('up')メソッドをつかって

 セルA1048576からA列の上方向に文字が入っているセルを検索し最初にヒットしたセルを選択します。

 st.range('A1048576').end('up').select()

 と記述します。


 【ソースコードパネル】

import xlwings

wb = xlwings.Book('WkBook3.xlsx')

st = wb.sheets['sheet1']

st.range('A1048576').end('up').select()


 それでは、このPythonプログラムを実行してみます。

Img7_3_23

 セルA11が選択されました。

 これは、セルA1048576からA列の上方向に文字が入っているセルを検索し最初にヒットしたセルだからです。



 rowメソッドをつかうと、セル番地で指定したセルの行番号を取得できます

Img7_3_24


 range(セル番地).end('up')メソッドとrowメソッドを組み合わせることで、

 指定したセル番地と同じ列の上方向に文字が入っているセルを検索し最初にヒットしたセルの行番号を取得

 することができます。

Img7_3_25

 上記コードでA列の文字が入っているセルの最大行を取得できます。


 早速、range(セル番地).end('up')メソッドrowメソッドを組み合わせてつかってみます。

 A列の終端セルの行番号を取得して、セルD2に格納します。

 st.range('D2').value = st.range('A1048576').end('up').row

 と記述します。

 併せて上記Python_xlwings_コードを、セルC2に格納します。

 st.range('C2').value = "st.range('A1048576').end('up').row"

 と記述します。


 【ソースコードパネル】

import xlwings

wb = xlwings.Book('WkBook3.xlsx')

st = wb.sheets['sheet1']

st.range('D2').value = st.range('A1048576').end('up').row

st.range('C2').value = "st.range('A1048576').end('up').row"


 それでは、そのPythonプログラムを実行してみます。

Img7_3_26

 A列の文字が入っているセルの最大行番号が取得され、セルC2にそのコード、

 セルD2に『11』が書きこまれました。

 これはA列の文字が入っているセルの最大行は、『11』行目ということです。



 range(行番号,列番号).end('up')メソッドとrowメソッドを組み合わせることで、

 指定した列番号と同じ列の上方向に文字が入っているセルを検索し最初にヒットしたセルの行番号を取得

 することができます。

Img7_3_27

 上記コードで1列目の文字が入っているセルの最大行を取得できます。


 早速、range(行番号,列番号).end('up')メソッドrowメソッドを組み合わせてつかってみます。

 1列目の終端セルの行番号を取得して、セルD3に格納します。

 st.range('D3').value = st.range(1048576,1).end('up').row

 と記述します。

 併せて上記Python_xlwings_コードを、セルC3に格納します。

 st.range('C3').value = "st.range(1048576,1).end('up').row"

 と記述します。


 【ソースコードパネル】

import xlwings

wb = xlwings.Book('WkBook3.xlsx')

st = wb.sheets['sheet1']

st.range('D3').value = st.range(1048576,1).end('up').row

st.range('C3').value = "st.range(1048576,1).end('up').row"


 それでは、そのPythonプログラムを実行してみます。

Img7_3_28

 1列目の文字が入っているセルの最大行番号が取得され、セルC3にそのコード、

 セルD3に『11』が書きこまれました。

 これは1列目の文字が入っているセルの最大行は、『11』行目ということです。



 cellsオブジェクトとlast_cellオブジェクトとrowメソッドを組み合わせることで、

 全セルの終端セル(XFD1048576)の行番号を取得することができます。

Img7_3_29

 上記コードで全セルの終端セル(XFD1048576)の行番号を取得できます。


 早速、cellsオブジェクトとlast_cellオブジェクトとrowメソッドを組み合わせてつかってみます。

 全セルの終端セル(XFD1048576)の行番号を取得して、セルD4に格納します。

 st.range('D4').value = st.cells.last_cell.row

 と記述します。

 併せて上記Python_xlwings_コードを、セルC4に格納します。

 st.range('C4').value = "st.cells.last_cell.row"

 と記述します。


 【ソースコードパネル】

import xlwings

wb = xlwings.Book('WkBook3.xlsx')

st = wb.sheets['sheet1']

st.range('D4').value = st.cells.last_cell.row

st.range('C4').value = "st.cells.last_cell.row"


 それでは、そのPythonプログラムを実行してみます。

Img7_3_29_2

 全セルの終端セル(XFD1048576)の行番号が取得され、セルC4にそのコード、

 セルD4に『1048576』が書きこまれました。

 これは全セルの終端セル(XFD1048576)の行番号は、『1048576』行目ということです。



 range(全セルの終端セルの行番号,列番号).end('up')メソッドとrowメソッドを組み合わせることで、

 指定した列番号と同じ列の上方向に文字が入っているセルを検索し最初にヒットしたセルの行番号を取得

 することができます。

Img7_3_30

 上記コードで1列目の文字が入っているセルの最大行を取得できます。


 早速、range(全セルの終端セルの行番号,列番号).end('up')メソッドrowメソッド

 組み合わせてつかってみます。

 1列目の終端セルの行番号を取得して、セルD5に格納します。

 st.range('D5').value = st.range(st.cells.last_cell.row,1).end('up').row

 と記述します。

 併せて上記Python_xlwings_コードを、セルC5に格納します。

 st.range('C5').value = "st.range(st.cells.last_cell.row,1).end('up').row"

 と記述します。


 【ソースコードパネル】

import xlwings

wb = xlwings.Book('WkBook3.xlsx')

st = wb.sheets['sheet1']

st.range('D5').value \

= st.range(st.cells.last_cell.row,1).end('up').row

st.range('C5').value \

= "st.range(st.cells.last_cell.row,1).end('up').row"


 それでは、そのPythonプログラムを実行してみます。

Img7_3_30_2

 1列目の文字が入っているセルの最大行番号が取得され、セルC5にそのコード、

 セルD5に『11』が書きこまれました。

 これは1列目の文字が入っているセルの最大行は、『11』行目ということです。


演習:C列の終端セルの行番号を取得して

    セルD11に格納

import xlwings

wb = xlwings.Book('WkBook3.xlsx')

st = wb.sheets['sheet1']

st.range('D11').value \

= st.range(st.cells.last_cell.row,3).end('up').row

Img7_3_30_3


 このように、range(全セルの終端セルの行番号,列番号).end('up')メソッドrowメソッド

 組み合わせることで対象列の文字が入っているセルの最大行を取得することができます。



 Excelのセルの最終行については、ブログ『Excelショートカットキーで最大行・最大列を選択』をご参照ください。」




目 次

1. ワークブックを作成する
ワークブックを作成する

2. セルの位置を指定する
セルの位置を指定する

3. ループ処理でセルに値を書きこむ
ループ処理でセルに値を書きこむ

4. ループ処理でセルの値を読みとる
ループ処理でセルの値を読みとる

5. ループ処理でセルからセルへ値を代入する
ループ処理でセルからセルへ値を代入する

6. 条件分岐処理でセルの操作を分ける
条件分岐処理でセルの操作を分ける

7. 関数・メソッド・プロパティ設定をつかう
関数・メソッド・プロパティ設定をつかう

8. 他のレンジ/シート/ブックを更新する(未公開)
他のレンジ/シート/ブックを更新する
(未公開)

1 他のレンジを更新

2 他のシートを更新

3 逆Z式並びで更新

4 複数シートを更新

5 他のブックを更新

6 他のブックをオープン・クローズ

7 新規ブックを作成し更新






YouTube

Excelマクロの実用版とデモ版


ブログ