【関数・メソッド・プロパティ設定をつかう】
9 文字が入っているセルの最大列を取得
10 行のループで複数の文字列を連続分解
11 列のループで複数の文字列を連続分解
12 指定した行番号と列番号のセル番地を取得
13 特定の文字列を指定文字列に置き換え
14 セル列番号を英字の列名に変換
15 文字列の中で特定の文字の位置インデックスを取得
指定した行番号と列番号のセル番地を取得
Python-xlwingsでは、get_addressメソッドをつかえば、range(行番号, 列番号)オブジェクトから
range(セル番地)オブジェクトのセル番地を取得することができます。
get_addressメソッドでは、行番号と列番号を指定することで
セル番地(英字の列アドレスと数字の行アドレス)を取得します。
予め、次のようなExcelシート『sheet1』を用意して、
Excelブック名を『WkBook4.xlsx』として保存します。
1. 指定列のセル番地を取得
1行目の右端セルの最大列番号を取得した後、
セル(1, 最大列番号)に対して
get_addressメソッドの引数
行参照にTrue:絶対参照、列参照にTrue:絶対参照を、
行参照にTrue:絶対参照、列参照にFalse:相対参照を、
行参照にFalse:相対参照、列参照にTrue:絶対参照を、
行参照にFalse:相対参照、列参照にFalse:相対参照を、
入れて、
セル番地を取得し、それぞれ
セル(2, 最大列番号)、
セル(3, 最大列番号)、
セル(4, 最大列番号)、
セル(5, 最大列番号)
に格納してみます。
xlwingsをインポート
Excelファイル『Wkbook4』をメモリ上に読みこみWorkbookオブジェクト『wb』を生成
Excelシート『sheet1』を読みこみsheetオブジェクト『st』を生成
1行目の最大列を取得し、変数『最大列』に格納
セル(1,最大列)の行:絶対参照・列:絶対参照のセル番地を取得し、セル(2,最大列)の値に格納
セル(1,最大列)の行:絶対参照・列:相対参照のセル番地を取得し、セル(3,最大列)の値に格納
セル(1,最大列)の行:相対参照・列:絶対参照のセル番地を取得し、セル(4,最大列)の値に格納
セル(1,最大列)の行:相対参照・列:相対参照のセル番地を取得し、セル(5,最大列)の値に格納
【ソースコードパネル】
import xlwings
wb = xlwings.Book('WkBook4.xlsx')
st = wb.sheets['sheet1']
最大列 = st.range(1,st.cells.last_cell.column).end('left').column
st.range(2, 最大列).value = st.range(1, 最大列).get_address(True, True)
st.range(3, 最大列).value = st.range(1, 最大列).get_address(True, False)
st.range(4, 最大列).value = st.range(1, 最大列).get_address(False, True)
st.range(5, 最大列).value = st.range(1, 最大列).get_address(False, False)
それでは、そのPythonプログラムを実行してみます。
セルK2に『$K$1』、セルK3に『K$1』、セルK4に『$K1』、セルK5に『K1』が書きこまれました。
2. 列のループでセル番地を取得
1行目の右端セルの最大列番号を取得した後、
最小列から最大列までのセル(1, 列番号)に対して
get_addressメソッドの引数
行参照にTrue:絶対参照、列参照にTrue:絶対参照を、
行参照にTrue:絶対参照、列参照にFalse:相対参照を、
行参照にFalse:相対参照、列参照にTrue:絶対参照を、
行参照にFalse:相対参照、列参照にFalse:相対参照を、
入れて、
セル番地を取得し、それぞれ
セル(2, 列番号)、
セル(3, 列番号)、
セル(4, 列番号)、
セル(5, 列番号)
に格納してみます。
xlwingsをインポート
Excelファイル『Wkbook4』をメモリ上に読みこみWorkbookオブジェクト『wb』を生成
Excelシート『sheet1』を読みこみsheetオブジェクト『st』を生成
変数『開始列』に『2』列目を代入
1行目の最大列を取得し、変数『最大列』に格納
変数『終了列』に『最大列』+1を代入
変数『列番号』を『開始列』から『終了列』までカウントアップしながら
以下の処理を繰り返す
セル(1,列番号)の行:絶対参照・列:絶対参照のセル番地を取得し、セル(2,列番号)の値に格納
セル(1,列番号)の行:絶対参照・列:相対参照のセル番地を取得し、セル(3,列番号)の値に格納
セル(1,列番号)の行:相対参照・列:絶対参照のセル番地を取得し、セル(4,列番号)の値に格納
セル(1,列番号)の行:相対参照・列:相対参照のセル番地を取得し、セル(5,列番号)の値に格納
【ソースコードパネル】
import xlwings
wb = xlwings.Book('WkBook4.xlsx')
st = wb.sheets['sheet1']
開始列 = 2
最大列 = st.range(1,st.cells.last_cell.column).end('left').column
終了列 = 最大列 + 1
for 列番号 in range(開始列,終了列):
st.range(2, 列番号).value = st.range(1, 列番号).get_address(True, True)
st.range(3, 列番号).value = st.range(1, 列番号).get_address(True, False)
st.range(4, 列番号).value = st.range(1, 列番号).get_address(False, True)
st.range(5, 列番号).value = st.range(1, 列番号).get_address(False, False)
それでは、そのPythonプログラムを実行してみます。
B列からK列にかけて、1行目のセルから取得したセル番地が、
2行目から5行目のセルに順に書きこまれました。
このように、get_addressメソッドをつかえば、
range(行番号, 列番号)オブジェクトから
range(セル番地)オブジェクトのセル番地を取得することができます。