【セルの位置を指定する】
1 rangeのセル番地を直接指定
2 rangeのセル番地を変数で指定
3 rangeの行番号と列番号を直接指定
4 rangeの行番号と列番号を変数で指定
5 rangeのセル範囲を直接指定
6 rangeのセル範囲を変数で指定
rangeの行番号と列番号を直接指定
Python-xlwingsのrangeの行番号と列番号については二つの指定方法がありますが、
今回は、その一、rangeオブジェクトの引数となる行番号と列番号を
直接指定する方法により、セルに値を書きこんでみます。
セル位置を行番号と列番号で指定するrangeオブジェクトを紹介します。
xlwingsをつかいPythonでExcelを操作するときは、
メモリ上にWorkbookオブジェクトを生成して、そのWorkbookを操作します。
( 『xlwingsをつかいWorkbookを新規作成しファイル保存』参照 )
次に、sheetオブジェクトを生成して、そのsheetを操作します。
Workbookオブジェクト名を『wb』、sheetオブジェクト名を『st』としておきます。
予め、ソースコードパネルに
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
と記述しておきます。
そして、行番号と列番号で指定したセルの値にデータを代入します。
その書式は下記の通りです。
まずは、1行目・1列目のセルの値に『直接指定1行1列』という文字列を代入してみます。
rangeオブジェクトの引数となる行番号を1・列番号を1とし、
そのセルの値に『直接指定1行1列』を代入するのだから、
st.range(1,1).value = "直接指定1行1列"
という順次処理を1行追加します。
ソースコードパネルは、
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(1,1).value = "直接指定1行1列"
となります。
それでは、そのPythonプログラムを実行してみましょう。
1行目・1列目のセルに、『直接指定1行1列』が書きこまれました。
次に、2行目・3列目のセルの値に『直接指定2行3列』という文字列を代入してみます。
rangeオブジェクトの引数となる行番号を2・列番号を3とし、
そのセルの値に『直接指定2行3列』を代入するのだから、
st.range(2,3).value = "直接指定2行3列"
という順次処理を1行追加します。
ソースコードパネルは、
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(2,3).value = "直接指定2行3列"
となります。
それでは、そのPythonプログラムを実行してみましょう。
2行目・3列目のセルに、『直接指定2行3列』が書きこまれました。
このようにrangeの右側の引数『( )』の中には、セルの行番号と列番号を数値で
指定することになります。
試しに、セルの行番号と列番号を適当な数値に書きかえて、Pythonプログラムを実行して、
指定したセルの位置に文字が書きこまれることを確かめてみましょう。
(1) 2行目・1列目のセルに『直接指定2行1列』を、
(2) 1行目・2列目のセルに『直接指定1行2列』を、
(3) 3行目・3列目のセルに『直接指定3行2列』を、代入してみましょう。
-
演習(1):2行目・1列目のセルの値に『直接指定2行1列』という文字列を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(2,1).value = "直接指定2行1列"
-
演習(2):1行目・2列目のセルの値に『直接指定1行2列』という文字列を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(1,2).value = "直接指定1行2列"
-
演習(3):3行目・3列目のセルの値に『直接指定3行3列』という文字列を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(3,3).value = "直接指定3行2列"
rangeの行番号と列番号については二つの指定方法がありますが、
今回は、その一、rangeオブジェクトの引数となる
行番号と列番号を直接指定する方法を紹介しました。
でも、セルの行番号と列番号を指定するとき、
rangeオブジェクトの引数:行番号と列番号を直接記述するという手法は、
マジックナンバーと呼ばれるやり方で、プログラムのメンテナンス上あまりお勧めできません。
では、行番号と列番号を直接指定することなく、
行番号と列番号を間接的に指定するにはどうしたらよいのでしょうか。
これについては、次回『rangeの行番号と列番号を変数で指定』で紹介します。」