【セルの位置を指定する】

1 rangeのセル番地を直接指定

2 rangeのセル番地を変数で指定

3 rangeの行番号と列番号を直接指定

4 rangeの行番号と列番号を変数で指定

rangeのセル番地を変数で指定

 Python-xlwingsrangeセル番地については二つの指定方法がありますが、

 今回は、その二、rangeオブジェクトの引数となるセル番地

 変数指定する方法により、セルに値を書きこんでみます。


 セル位置セル番地で指定するrangeオブジェクトを再び紹介します。

T2_1_Img

 変数とは、一時的に値を保持するためのデータの入れ物です。

 変数をつかうときは、まず名前を決めます。

 この変数の名前には次のような決まりがあります。

T2_5_Img

 セル番地を変数で指定するときは、セル番地の変数名を決めます

 名前の決まりに従えば、変数名はどのようにつけてもかまわないのですが、

 意味のある文字にしておくと、後で見たときにわかりやすいコードになります。

 Pythonでは、変数名を日本語文字にすることもできるため、

 ここでは、セル番地の変数名を『セル番地』とします。


 xlwingsをつかいPythonでExcelを操作するときは、

 メモリ上にWorkbookオブジェクトを生成して、そのWorkbookを操作します。

 ( 『xlwingsをつかいWorkbookを新規作成しファイル保存』参照 )

T2_2_Img

 次に、sheetオブジェクトを生成して、そのsheetを操作します。

T2_3_Img

 Workbookオブジェクト名を『wb』、sheetオブジェクト名を『st』としておきます。

 予め、ソースコードパネルに

import xlwings

wb = xlwings.Book()

st = wb.sheets[0]

 と記述しておきます。


 それから、変数『セル番地』に、データ『セル番地』を、代入します。

 変数に値を代入するときは、次のような書式となります。

T2_6_Img

 そして、変数『セル番地』で指定したセルの値にデータを代入します。

 その書式は下記の通りです。

T2_4_Img


 まずは、セル番地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プログラムを実行してみましょう。

Img2_2_1

 セル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プログラムを実行してみましょう。

Img2_2_2

 セル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. ループ処理でセルに値を書きこむ
ループ処理でセルに値を書きこむ

4. ループ処理でセルの値を読みとる
ループ処理でセルの値を読みとる

5. ループ処理でセルからセルへ値を代入する
ループ処理でセルからセルへ値を代入する

6. 条件分岐処理でセルの操作を分ける
条件分岐処理でセルの操作を分ける

7. 関数をつかってセルの値を加工する(未公開)
関数をつかってセルの値を加工する
(未公開)

1 文字列から一部の文字列を取得

2 文字列を1文字ずつ分解

3 行のループで複数の文字列を連続分解

4 列のループで複数の文字列を連続分解

5 セル番地から英字の列名を取得

6 セルの書式を変更


8. 他のレンジ/シート/ブックを更新する(未公開)
他のレンジ/シート/ブックを更新する
(未公開)

1 他のレンジを更新

2 他のシートを更新

3 逆Z式並びで更新

4 複数シートを更新

5 他のブックを更新

6 他のブックをオープン・クローズ

7 新規ブックを作成し更新






YouTube

Excelマクロの実用版とデモ版


ブログ