【セルの位置を指定する】
1 rangeのセル番地を直接指定
2 rangeのセル番地を変数で指定
3 rangeの行番号と列番号を直接指定
4 rangeの行番号と列番号を変数で指定
5 rangeのセル範囲を直接指定
6 rangeのセル範囲を変数で指定
rangeの行番号と列番号を変数で指定
Python-xlwingsのrangeの行番号と列番号については二つの指定方法がありますが、
今回は、その二、rangeオブジェクトの引数となる行番号と列番号を
変数で指定する方法により、セルに値を書きこんでみます。
セル位置を行番号と列番号で指定するrangeオブジェクトを再び紹介します。
変数とは、一時的に値を保持するためのデータの入れ物です。
変数をつかうときは、まず名前を決めます。
この変数の名前には次のような決まりがあります。
行番号を変数で指定するときは、行番号の変数名を決めます。
名前の決まりに従えば、変数名はどのようにつけてもかまわないのですが、
意味のある文字にしておくと、後で見たときにわかりやすいコードになります。
Pythonでは、変数名を日本語文字にすることもできるため、
ここでは、行番号の変数名を『行』とします。
また、列番号を変数で指定するときも、列番号の変数名を決めます。
ここでは、列番号の変数名を『列』とします。
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列』という文字列を代入してみます。
行番号を示す変数『行』に 1 を設定。
列番号を示す変数『列』に 1 を設定。
行番号が変数『行』と列番号が変数『列』のセルの値として、『変数指定1行1列』を設定。
行 = 1
列 = 1
st.range(行,列).value = "変数指定1行1列"
という順次処理を3行追加します。
ソースコードパネルは、
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
行 = 1
列 = 1
st.range(行,列).value = "変数指定1行1列"
となります。
それでは、そのPythonプログラムを実行してみましょう。
1行目・1列目のセルに、『変数指定1行1列』が書きこまれました。
次に、2行目・3列目のセルの値に『変数指定2行3列』という文字列を代入してみます。
行番号を示す変数『行』に 2 を設定。
列番号を示す変数『列』に 3 を設定。
行番号が変数『行』と列番号が変数『列』のセルの値として、『変数指定2行3列』を設定。
行 = 2
列 = 3
st.range(行,列).value = "変数指定2行3列"
という順次処理を3行追加します。
ソースコードパネルは、
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
行 = 2
列 = 3
st.range(行,列).value = "変数指定2行3列"
となります。
それでは、そのPythonプログラムを実行してみましょう。
2行目・3列目のセルに、『変数指定2行3列』が書きこまれました。
このように、セルの行番号と列番号を示す値をそれぞれの変数に設定しておけば、
『range(行番号, 列番号).value』の行番号・列番号をそれぞれの変数により指定することができます。
試しに、変数『行』と変数『列』に設定する数値を適当な値に書きかえて、Pythonプログラムを実行して、
指定したセルの位置に文字が書きこまれることを確かめてみましょう。
(1) 2行目・1列目のセルに『変数指定2行1列』を、
(2) 1行目・2列目のセルに『変数指定1行2列』を、
(3) 3行目・3列目のセルに『変数指定3行3列』を、代入してみましょう。
-
演習(1):2行目・1列目のセルの値に『変数指定2行1列』という文字列を代入
変数『行』に、値『2』を代入
変数『列』に、値『1』を代入
行番号が変数『行』と列番号が変数『列』のセルの値に、『変数指定2行1列』を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
行 = 2
列 = 1
st.range(行,列).value = "変数指定2行1列"
-
演習(2):1行目・2列目のセルの値に『変数指定1行2列』という文字列を代入
変数『行』に、値『1』を代入
変数『列』に、値『2』を代入
行番号が変数『行』と列番号が変数『列』のセルの値に、『変数指定1行2列』を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
行 = 1
列 = 2
st.range(行,列).value = "変数指定1行2列"
-
演習(3):3行目・3列目のセルの値に『変数指定3行3列』という文字列を代入
変数『行』に、値『3』を代入
変数『列』に、値『3』を代入
行番号が変数『行』と列番号が変数『列』のセルの値に、『変数指定3行3列』を代入
-
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
行 = 3
列 = 3
st.range(行,列).value = "変数指定3行3列"
rangeの行番号と列番号については二つの指定方法がありますが、
今回は、その二、rangeオブジェクトの引数となる
行番号と列番号を変数で指定する方法を紹介しました。
これで、rangeの行番号・列番号の指定方法が二つ揃いましたので、おさらいします。
その一、行番号・列番号を直接指定
コードに行番号・列番号を直接記述する方法。
マジックナンバーと呼ばれるやり方でプログラムのメンテナンス上、非推奨。
前回『rangeの行番号と列番号を直接指定』で紹介
その二、行番号・列番号を変数で指定
行番号・列番号を示す変数に、行番号・列番号を示す数値を設定する方法。
プログラムが終了するまでに行番号・列番号が何回も変わる変動値のときに有効。
今までは、rangeオブジェクトをつかい、一つのセルを行番号・列番号で指定しました。
では、rangeオブジェクトをつかい、多数のセルを行番号・列番号で指定するには
どうしたらよいのでしょうか。
これについては、『多数のセルの行番号と列番号を直接指定して値を書きこむ』で紹介します。」