【セルの位置を指定する】
1 rangeのセル番地を直接指定
2 rangeのセル番地を変数で指定
3 rangeの行番号と列番号を直接指定
4 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]
と記述しておきます。
それから、変数『セル番地』に、データ『セル番地』を、代入します。
変数に値を代入するときは、次のような書式となります。
そして、変数『セル番地』で指定したセルの値にデータを代入します。
その書式は下記の通りです。
まずは、セル番地A1のセルの値に『変数指定A1』という文字列を代入してみます。
セル番地を示す変数『セル番地』に ’A1’ を設定。
セル番地が変数『セル番地』のセルの値として、『変数指定A1』を設定。
セル番地 = ’A1’
st.range(セル番地).value = "変数指定A1"
という順次処理を2行追加します。
ソースコードパネルは、
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
セル番地 = ’A1’
st.range(セル番地).value = "変数指定A1"
となります。
それでは、そのPythonプログラムを実行してみましょう。
セルA1に、『変数指定A1』が書きこまれました。
次に、セル番地B2のセルの値に『変数指定B2』という文字列を代入してみます。
セル番地を示す変数『セル番地』に ’B2’ を設定。
セル番地が変数『セル番地』のセルの値として、『変数指定B2』を設定。
セル番地 = ’B2’
st.range(セル番地).value = "変数指定B2"
という順次処理を2行追加します。
ソースコードパネルは、
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
セル番地 = ’B2’
st.range(セル番地).value = "変数指定B2"
となります。
それでは、そのPythonプログラムを実行してみましょう。
セルB2に、『変数指定B2』が書きこまれました。
このように、セル番地を示す値を変数に設定しておけば、
『range(セル番地).value』のセル番地を変数により指定することができます。
試しに、変数『セル番地』に設定する文字列を適当な値に書きかえて、Pythonプログラムを実行して、
指定したセルの位置に文字が書きこまれることを確かめてみましょう。
(1) セルA2に『変数指定A2』を、
(2) セルB1に『変数指定B1』を、
(3) セルC3に『変数指定C3』を、代入してみましょう。
演習(1): セルA2に『変数指定A2』という文字列を代入
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
セル番地 = ’A2’
st.range(セル番地).value = "変数指定A2"
演習(2): セルB1に『変数指定B1』という文字列を代入
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
セル番地 = ’B1’
st.range(セル番地).value = "変数指定B1"
演習(3): セルC3に『変数指定C3』という文字列を代入
import xlwings
wb = xlwings.Book()
st = wb.sheets[0]
セル番地 = ’C3’
st.range(セル番地).value = "変数指定C3"
rangeのセル番地については二つの指定方法がありますが、
今回は、その二、rangeオブジェクトの引数となる
セル番地を変数で指定する方法を紹介しました。
これで、rangeのセル番地の指定方法が二つ揃いましたので、おさらいします。
その一、セル番地を直接指定
コードにセル番地を直接記述する方法。
マジックナンバーと呼ばれるやり方でプログラムのメンテナンス上、非推奨。
前回『rangeのセル番地を直接指定』で紹介
その二、セル番地を変数で指定
セル番地を示す変数に、セル番地を示す文字列を設定する方法。
プログラムが終了するまでにセル番地が何回も変わる変動値のときに有効。
今までは、rangeオブジェクトをつかい、一つのセルをセル番地で指定しました。
では、rangeオブジェクトをつかい、一つのセルを行番号と列番号で指定するには
どうしたらよいのでしょうか。
これについては、次回『rangeの行番号と列番号を直接指定』で紹介します。」
1 他のレンジを更新
2 他のシートを更新
3 逆Z式並びで更新
4 複数シートを更新
5 他のブックを更新
6 他のブックをオープン・クローズ
7 新規ブックを作成し更新
2023-07-22
2023-07-21
2023-03-19