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

6 文字列の文字数を取得

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

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

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

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

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

12 指定した行番号と列番号のセル番地を取得

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

 今回は、Python-xlwingsでendメソッドをつかって文字が入っているセルの最大列を取得してみます。

Img7_3_31

 前回は、最後の行を調べるためにend('up')メソッドをつかいましたが、

 今回は、end('left')メソッドをつかって最後の列を調べてみます。


 予め、次のようなExcelシート『sheet2』を用意して、

 Excelブック名を『WkBook3.xlsx』として保存します。

 キーボード操作でセルM7を選択します。

Img7_3_32

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

 セルXFD1から1行目の左方向に文字が入っているセルを検索し最初にヒットしたセルを選択します。

 st.range('XFD1').end('left').select()

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet2']

st.range('XFD1').end('left').select()

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


Img7_3_33

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

 これは、セルXFD1から1行目の左方向に文字が入っているセルを検索し最初にヒットしたセルだからです。



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

Img7_3_34


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

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

 することができます。

Img7_3_35

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


 早速、range(セル番地).end('left')メソッドcolumnメソッド

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

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

 st.range('K4').value = st.range('XFD1').end('left').column

 と記述します。

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

 st.range('B4').value = “st.range('XFD1').end('left').column"

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet2']

st.range('K4').value = st.range('XFD1').end('left').column

st.range('B4').value = "st.range('XFD1').end('left').column"

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


Img7_3_36

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

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

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



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

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

 することができます。

Img7_3_37

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


 早速、range(行番号,列番号).end('left')メソッドcolumnメソッド

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

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

 st.range('K5').value = st.range(1,16384).end('left').column

 と記述します。

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

 st.range('B5').value = "st.range(1,16384).end('left').column"

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet2']

st.range('K5').value = st.range(1,16384).end('left').column

st.range('B5').value = "st.range(1,16384).end('left').column"

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


Img7_3_38

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

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

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



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

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

Img7_3_39

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


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

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

 st.range('K6').value = st.cells.last_cell.column

 と記述します。

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

 st.range('B6').value = "st.cells.last_cell.column"

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet2']

st.range('K6').value = st.cells.last_cell.column

st.range('B6').value = "st.cells.last_cell.column"

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


Img7_3_39_2

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

 セルK6に『16384』が書きこまれました。

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



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

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

 することができます。

Img7_3_40

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


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

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

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

 st.range('K7').value = st.range(st.cells.last_cell.row,1).end('left').column

 と記述します。

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

 st.range('B7').value = "st.range(st.cells.last_cell.row,1).end('left').column"

 と記述します。

 【ソースコードパネル】

import xlwings

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

st = wb.sheets['sheet2']

st.range('K7').value \

= st.range(1,st.cells.last_cell.column).end('left').column

st.range('B7').value \

= "st.range(1,st.cells.last_cell.column).end('left').column"

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


Img7_3_40_2

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

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

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


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

    セルK2に格納

import xlwings

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

st = wb.sheets['sheet2']

st.range('K2').value \

= st.range(3,st.cells.last_cell.column).end('left').column

Img7_3_40_3


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

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



 Excelのセルの最大列については、

 ブログ『Excelショートカットキーで最大行・最大列を選択

 をご参照ください。」