エクセルの特定範囲に名前を定義する設定をしているんだけど、
毎回のことなので結構めんどう…。
Pythonのopenpyxlで「名前の定義」を設定して自動化したい…。
なるほど…。
では今回は、「openpyxlで名前の定義を設定する方法」を
できるだけわかりやすく解説いたします。
openpyxlで「名前の定義」を設定する方法
「create_named_range」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。
全コード
下記コードは、「A1~A3」の範囲に「Utatane」という名前をつけた例です。
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
wb.create_named_range('Utatane', ws, '$A$1:$C$3')
wb.save('C:/Utatane/output.xlsx')
wb.create_named_range('Utatane', ws, '$A$1:$C$3')
実行結果
事前準備
- openpyxlのインストール
既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。
openpyxlのインストール方法
openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。
pip install openpyxl
※openpyxlを使用したことがある場合は、このインストール作業は不要です。
インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。
解説
※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。
インポート~ブック・シートの取得
import openpyxl
wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']
上記コードにて、エクセル操作に必要な「openpyxl」のインポートと、エクセルブック・シートを取得しています。
詳細は、「インストール方法」の記事をご参考ください。
名前の定義
wb.create_named_range('Utatane', ws, '$A$1:$C$3')
上記コードにて、「名前の定義」を行っております。
【コードの解説】
ワークブックが入った変数(今回はwb)に続けて、「.create_named_range()」を書きます。
()内には「名前(何でもOK)」,「ワークシートが入った変数」,「名前を付けたいセル範囲」を書いて完了です。
【注意点】
「名前を付けたいセル範囲」は絶対参照($マーク付き)で書いてください。
相対参照($マークなし)だと、うまくいきません。
また、「名前」と「名前を付けたいセル範囲」は「’(クォーテーション)」で囲ってください。
これで「名前の定義」が完了です。
実行後のファイルを開いてみます。
名前ボックス(下図参照)の右にある「v」をクリックすると、今回設定した「Utatane」というのが出てきますので、「Utatane」をクリックします。
指定した範囲(A1~C3)にカーソルが移動しました。
名前の定義が成功していることがわかります。
名前の定義とは?
「名前の定義」は、エクセルで特定のセルやセル範囲に対して名前を付ける機能です。
わかりやすく言うと、グループ名を付けているようなものだと思ってください。
(山田、山下、山崎で山トリオなど)
今回のようにセル範囲「A1~C3」に「Utatane」という名前を付ければ、その範囲を名前で簡単に参照できるようになります。
これにより、データの管理が楽になります。
では、簡単な活用法を見ていきましょう。
「名前の定義」の簡単な活用法
下図を見てください。
前項のように、「A1~C3」の範囲に「Utatane」という名前をつけたエクセルがあります。
通常、この範囲の合計を求めたい場合は「=sum($A$1:$C$3)」という数式が必要になりますが、「名前の定義」を行っていれば、もっと簡単になります。
上図のように、「=sum(Utatane)」で合計値を算出できます。
「vlookup」や「countifs」など、セルの範囲を指定する時にも便利ですので、いろいろ試してみてください。
うまく動作しない場合の対処法
エラーが出る
No such file or directory: ○○
これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。
詳しい解説は、下記記事をご参考ください。
Permission denied: ○○
操作しようとしているファイルにアクセスできないというエラーです。
「ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。
詳しい解説は、下記記事をご参考ください。
Worksheet ○○ does not exist
「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。
詳しい解説は、下記記事をご参考ください。
○○ is not defined
今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。
詳しい解説は、下記記事をご参考ください。
list index out of range
規定を超える部分を操作しようとした時に出るエラーです。
今回の場合では、実際にないSheet3(シート番号2)などを指定した場合にも起こります。
ファイルとコードを再確認しましょう。
その他のエラー
その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。
最後に
openpyxlで名前の定義を設定する方法を解説いたしました。
当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。
挫折せずにPythonを独学で学習する方法は特におすすめです。
最後までお読みいただき、ありがとうございました。がんばってください!