【セルの位置を指定する】
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]
と記述しておきます。
そして、セル番地で指定したセルの値にデータを代入します。
その書式は下記の通りです。
まずは、セル番地A1のセルの値に『直接指定A1』という文字列を代入してみます。
rangeオブジェクトの引数となるセル番地を’A1’とし、
そのセルの値に『直接指定A1』を代入するのだから、
st.range(’A1’).value = "直接指定A1"
という順次処理を1行追加します。
ソースコードパネルは、
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(’A1’).value = "直接指定A1"
となります。
それでは、そのPythonプログラムを実行してみましょう。
セルA1に、『直接指定A1』が書きこまれました。
次に、セル番地B2のセルの値に『直接指定B2』という文字列を代入してみます。
rangeオブジェクトの引数となるセル番地を’B2’とし、
そのセルの値に『直接指定B2』を代入するのだから、
st.range(’B2’).value = "直接指定B2"
という順次処理を1行追加します。
ソースコードパネルは、
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(’B2’).value = "直接指定B2"
となります。
それでは、そのPythonプログラムを実行してみましょう。
セルB2に、『直接指定B2』が書きこまれました。
このようにrangeの右側の引数『( )』の中には、セル番地を文字列で
指定することになります。
試しに、セル番地を適当な文字列に書きかえて、Pythonプログラムを実行して、
指定したセルの位置に文字が書きこまれることを確かめてみましょう。
(1) セルA2に『直接指定A2』を、
(2) セルB1に『直接指定B1』を、
(3) セルC3に『直接指定C3』を、代入してみましょう。
-
演習(1):セルA2の値に『直接指定A2』という文字列を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(’A2’).value = "直接指定A2"
-
演習(2):セルB1の値に『直接指定B1』という文字列を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(’B1’).value = "直接指定B1"
-
演習(3):セルC3の値に『直接指定C3』という文字列を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
st.range(’C3’).value = "直接指定C3"
rangeのセル番地については二つの指定方法がありますが、
今回は、その一、rangeオブジェクトの引数となる
セル番地を直接指定する方法を紹介しました。
でも、セル番地を指定するとき、
rangeオブジェクトの引数:セル番地を直接記述するという手法は、
マジックナンバーと呼ばれるやり方で、プログラムのメンテナンス上あまりお勧めできません。
では、セル番地を直接指定することなく、
セル番地を間接的に指定するにはどうしたらよいのでしょうか。
これについては、次回『rangeのセル番地を変数で指定』で紹介します。」