【関数・メソッド・プロパティ設定をつかう】
5 文字列の指定位置から1文字を取得
6 文字列の文字数を取得
7 文字列のループで1文字ずつ分解
8 文字が入っているセルの最大行を取得
9 文字が入っているセルの最大列を取得
10 行のループで複数の文字列を連続分解
11 列のループで複数の文字列を連続分解
文字が入っているセルの最大行を取得
今回は、Python-xlwingsで文字が入っているセルの最大行を取得してみます。
Python-xlwingsには文字が入っているセルの終端セルを一瞬で検索してくれる便利なメソッドがあります。
それが、endメソッドです。
endメソッドでは、引数:Directionに、検索方向を示す定数として、
『'up'』を入れると上方向へ検索しながら、
『'down'』を入れると下方向へ検索しながら、
『'left'』を入れると左方向へ検索しながら、
『'right'』を入れると右方向へ検索しながら、
終端セルを取得します。
先ず、キーボード操作でセルD13を選択します。
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プログラムを実行してみます。
セルA11が選択されました。
これは、セルA1048576からA列の上方向に文字が入っているセルを検索し最初にヒットしたセルだからです。
rowメソッドをつかうと、セル番地で指定したセルの行番号を取得できます。
range(セル番地).end('up')メソッドとrowメソッドを組み合わせることで、
指定したセル番地と同じ列の上方向に文字が入っているセルを検索し最初にヒットしたセルの行番号を取得
することができます。
上記コードで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プログラムを実行してみます。
A列の文字が入っているセルの最大行番号が取得され、セルC2にそのコード、
セルD2に『11』が書きこまれました。
これはA列の文字が入っているセルの最大行は、『11』行目ということです。
range(行番号,列番号).end('up')メソッドとrowメソッドを組み合わせることで、
指定した列番号と同じ列の上方向に文字が入っているセルを検索し最初にヒットしたセルの行番号を取得
することができます。
上記コードで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プログラムを実行してみます。
1列目の文字が入っているセルの最大行番号が取得され、セルC3にそのコード、
セルD3に『11』が書きこまれました。
これは1列目の文字が入っているセルの最大行は、『11』行目ということです。
cellsオブジェクトとlast_cellオブジェクトとrowメソッドを組み合わせることで、
全セルの終端セル(XFD1048576)の行番号を取得することができます。
上記コードで全セルの終端セル(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プログラムを実行してみます。
全セルの終端セル(XFD1048576)の行番号が取得され、セルC4にそのコード、
セルD4に『1048576』が書きこまれました。
これは全セルの終端セル(XFD1048576)の行番号は、『1048576』行目ということです。
range(全セルの終端セルの行番号,列番号).end('up')メソッドとrowメソッドを組み合わせることで、
指定した列番号と同じ列の上方向に文字が入っているセルを検索し最初にヒットしたセルの行番号を取得
することができます。
上記コードで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プログラムを実行してみます。
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
このように、range(全セルの終端セルの行番号,列番号).end('up')メソッドとrowメソッドを
組み合わせることで対象列の文字が入っているセルの最大行を取得することができます。
Excelのセルの最大行については、
ブログ『Excelショートカットキーで最大行・最大列を選択』
をご参照ください。」