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