【ループ処理でセルに値を書きこむ】

 1 多数のセルの行番号と列番号を直接指定して値を書きこむ

 2 多数のセルの行番号と列番号を変数で指定して値を書きこむ

 3 ループ処理で多数行のセルに値を書きこむ

 4 ループ処理で多数列のセルに値を書きこむ

 5 ダブルループ処理で多数行×多数列のセルに値を書きこむ

ループ処理で多数行のセルに値を書きこむ

 Python-xlwingsループ(繰り返し)処理をつかえば、

 多数行に係る順次処理を一つの順次処理にまとめることができます。

 例え100万行の順次処理でも一つの順次処理にまとめることができます。


 ループ処理とは同じ処理を何度もくり返し実行するということです。

 ループ処理の構文として、forを紹介します。

Img3_3_1

 このように、forは、『for』の次にセットされた変数を、

 開始値から終了値になるまで、1ずつカウントアップさせながら、

 一段階インデント(半角スペース4文字分)することで確定する順次処理のブロック

 くり返し実行します。


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

 メモリ上に、Workbookオブジェクトを生成、更に、sheetオブジェクトを生成して、

 そのsheetを操作します。( 『rangeの行番号と列番号を変数で指定』参照 )

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

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

import xlwings

wb = xlwings.Book()

st = wb.sheets[0]

 と記述しておきます。



1. 1~3行・1列

 列を1列目に固定して、行を1行目から3行目まで1行ずつカウントアップしていき、

 3つのセルに対して、『X行1列』を設定します。


 今度の問題は、『多数のセルの行番号と列番号を変数で指定して値を書きこむ』の

 2. 1~3行・1列と同じ問題です。

 そのときにつくったPythonプログラムの一部を記載します。

列 = 1

行 = 1

st.range(行,列).value = str(行) + '行' + str(列) + '列'

行 = 2

st.range(行,列).value = str(行) + '行' + str(列) + '列'

行 = 3

st.range(行,列).value = str(行) + '行' + str(列) + '列'


 に係る順次処理3回も書いています。

 forをつかって、3回の順次処理を一つにまとめてみます。


 変数『行番号を、開始行から終了行になるまで1ずつカウントアップさせながら、

 セルに値を書きこむ順次処理をくり返し実行するforは、次のようになります。

Img3_3_2

 この行番号のループ処理を実行するための構文をつかって、

 Pythonプログラムをまとめると、次のようになります。

列 = 1

for 行 in range(1,4):

st.range(行,列).value = str(行) + '行' + str(列) + '列'


 3に係る順次処理が、forをつかうことで一つの順次処理にまとまりました。

 for in range(1,4):』の次の行から一段階インデント(半角スペース4文字分)

 されているコードがループ処理のブロックとなっていて、

 『st.range(,).value = str() + ‘行’ + str() + ‘列’

 がくり返し実行される処理となっています。


 『for in range(1,4):』は、変数『開始行『1から終了行『3まで

 1ずつカウントアップしていくということです。

 つまり、

 for in range(1,4):

 st.range(,).value = str() + ‘行’ + str() + ‘列’

 とは、

 変数『開始行『1から終了行『3まで1ずつカウントアップしながら、

 変数『変数『のセルに対して、『'行''列'の結合値を設定する

 という意味です。


 ソースコードパネルは、

import xlwings

wb = xlwings.Book()

st = wb.sheets[0]

列 = 1

for 行 in range(1,4):

st.range(行,列).value = str(行) + '行' + str(列) + '列'

 となります。


 それでは、そのPythonプログラムを実行してみましょう。

Img3_3_4

 1行目・1列目のセルに『1行1列』、

 2行目・1列目のセルに『2行1列』、

 3行目・1列目のセルに『3行1列』が書きこまれました。



2. 1~10行・1列

 列を1列目に固定して、行を1行目から10行目まで1行ずつカウントアップしていき、

 10のセルに対して、『X行1列』を設定します。


 一つ前の問題は、『行を1行目から3行目まで1行ずつカウントアップ』するのに対して、

 今度の問題は、『行を1行目から10行目まで1行ずつカウントアップ』するということで、

 カウントアップの終了値が変わるだけです。

 forでは、range関数の第2引数に、終了値を記述することになっているから、

 さきほどのPythonプログラムの『for in range(1,4):』を、

 『for in range(1,11):』に書きかえるだけです。


 ソースコードパネルは、

import xlwings

wb = xlwings.Book()

st = wb.sheets[0]

列 = 1

for 行 in range(1,11):

st.range(行,列).value = str(行) + '行' + str(列) + '列'

 となります。


 それでは、そのPythonプログラムを実行してみましょう。

Img3_3_6

 1行目・1列目のセルに『1行1列』、

 2行目・1列目のセルに『2行1列』、

 3行目・1列目のセルに『3行1列』、

 4行目・1列目のセルに『4行1列』、

 5行目・1列目のセルに『5行1列』、

 6行目・1列目のセルに『6行1列』、

 7行目・1列目のセルに『7行1列』、

 8行目・1列目のセルに『8行1列』、

 9行目・1列目のセルに『9行1列』、

 10行目・1列目のセルに『10行1列』が書きこまれました。



3. 1~100行・1列

 ループ処理終了値100まで増やします。

 列を1列目に固定して、行を1行目から100行目まで1行ずつカウントアップしていき、

 100のセルに対して、『X行1列』を設定します。


 forでは、range関数の第2引数に、終了値を記述することになっているから、

 さきほどのPythonプログラムの『for in range(1,11):』を、

 『for in range(1,101):』に書きかえるだけです。


 ソースコードパネルは、

import xlwings

wb = xlwings.Book()

st = wb.sheets[0]

列 = 1

for 行 in range(1,101):

st.range(行,列).value = str(行) + '行' + str(列) + '列'

 となります。


 それでは、そのPythonプログラムを実行してみましょう。

Img3_3_8

 1行目から100行目で、1列目のセルに、『X行1列』が書きこまれました。



4. 1~1000行・1列

 ループ処理終了値をいっきに1000まで増やします。

 列を1列目に固定して、行を1行目から1000行目まで1行ずつカウントアップしていき、

 1000のセルに対して、『X行1列』を設定します。


 forでは、range関数の第2引数に、終了値を記述することになっているから、

 さきほどのPythonプログラムの『for in range(1,101):』を、

 『for in range(1,1001):』に書きかえます。


 ソースコードパネルは、

import xlwings

wb = xlwings.Book()

st = wb.sheets[0]

列 = 1

for 行 in range(1,1001):

st.range(行,列).value = str(行) + '行' + str(列) + '列'

 となります。


 それでは、そのPythonプログラムを実行してみましょう。

Img3_3_10

 1行目から1000行目で、1列目のセルに、『X行1列』が書きこまれました。



 このように、例え1000010000010000001048576行数

 どんなに増えたとしても、forをつかえば、多数行に係る順次処理が、

 一つの順次処理にまとめられます。

 試しにforの開始行・終了行と列番号の変数に設定する値を適当な数字に書きかえて、

 Pythonプログラムを実行して、多数行のセルに値が書きこまれることを確かめてみてください。


 今回は、行数がどんなに増えたとしても、forをつかえば、多数行に係る順次処理が、

 一つの順次処理にまとめられて、多数行のセルに値を書きこむことができるという話でした。

 では、列数が増えたときは、どうすればよいのでしょうか。

 これについては、次回『ループ処理で多数列のセルに値を書きこむ』で紹介します。