PR
全4651文字

 Excelデータをプログラムで扱うのなら、プログラミング言語はVBA(Visual Basic for Applications)が定番です。しかし必ずしもVBAを使う必要はありません。筆者はPythonを使ってExcelデータの操作を自動化することをお勧めします。Pythonを使えば「脱VBA」を進められます。

 PythonでExcelデータを操作するには、前回までに解説してきたように、行/列を指定してワークシートのセルにアクセスするのが基本です。ワークシートはイテラブル・オブジェクトとして行を返しますし、行も同様にセルを返します。イテラブル・オブジェクトを活用すれば、直接行番号、列番号を記述せずに読み込むセルを指定することができます。

 sample.xlsxというExcelファイルを作って、動作を確かめてみましょう。Excelファイルは「.¥data」フォルダーに入っているとします。

sample.xlsxの内容
sample.xlsxの内容
[画像のクリックで拡大表示]

 このファイルのワークシートには、データはA1からF5まで整然と入力されています。

 次のプログラムを使うと、sample.xlsxを読み込んでworkbookのsheetからrow(行)を取得し、rowからcell(セル)を取得して順に出力していくことができます。

import openpyxl


wb = openpyxl.load_workbook("..¥data¥sample.xlsx")
for sheet in wb:
    for row in sheet:
        for cell in row:
            print(cell.value)
対象のワークシートから、データ範囲を自動で取得するプログラム


 このコードを、Pythonの開発環境、ここでは「Visual Studio Code」で入力し、動かしてみます。処理結果を、画面下部の「ターミナル」で確認してみましょう。

行、列順に出力されている
行、列順に出力されている
[画像のクリックで拡大表示]

 ワークシート上の各行のセル内容が、列順の通りに1行ずつ出力されていることがわかります。このようにデータが1つの範囲(Range)に規則的に入力されている場合は、for row in sheet:でデータ範囲の各行での繰り返しを指示し、for cell in row:で処理対象の行のセルに順にアクセスすることができます。異なるファイルから読み出す時でも、いちいち「どこからどこまで」をプログラムで記述し直す必要はありません。便利ですね。

 でも、データが整然と並んでいなかったり、データのないセルが範囲内にあったりする場合はどうなっているのでしょうか。列の終わり、行の終わりをどうやって判断しているのか、調べてみましょう。

この記事は会員登録で続きをご覧いただけます

日経クロステック登録会員になると…

新着が分かるメールマガジンが届く
キーワード登録、連載フォローが便利

さらに、有料会員に申し込むとすべての記事が読み放題に!
有料会員と登録会員の違い