Excelデータをプログラムで扱うのなら、プログラミング言語はVBA(Visual Basic for Applications)が定番です。しかし必ずしもVBAを使う必要はありません。筆者はPythonを使ってExcelデータの操作を自動化することをお勧めします。Pythonを使えば「脱VBA」を進められます。
PythonでExcelデータを操作するには、前回までに解説してきたように、行/列を指定してワークシートのセルにアクセスするのが基本です。ワークシートはイテラブル・オブジェクトとして行を返しますし、行も同様にセルを返します。イテラブル・オブジェクトを活用すれば、直接行番号、列番号を記述せずに読み込むセルを指定することができます。
sample.xlsxというExcelファイルを作って、動作を確かめてみましょう。Excelファイルは「.¥data」フォルダーに入っているとします。
このファイルのワークシートには、データは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:で処理対象の行のセルに順にアクセスすることができます。異なるファイルから読み出す時でも、いちいち「どこからどこまで」をプログラムで記述し直す必要はありません。便利ですね。
でも、データが整然と並んでいなかったり、データのないセルが範囲内にあったりする場合はどうなっているのでしょうか。列の終わり、行の終わりをどうやって判断しているのか、調べてみましょう。
この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!
日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら