【openpyxl】セルに入力規則を設定する方法【初心者向けに徹底解説】

スポンサードリンク
Python
過去の自分
過去の自分

openpyxlでエクセルファイルを編集しているんだけど、
新商品の個数を入力してもらうため、
数値のみ入力を受け付けるようにしたい…。

今の自分
今の自分

なるほど、入力規則をしたいということですね!?
では今回は、「openpyxlで入力規則を設定する方法」
できるだけわかりやすく解説いたします。

著者情報
スポンサードリンク

openpyxlで入力規則を設定する方法

「DataValidation」を使います。まずは全コードと実行結果をお見せします。
解説は後ほど行います。

全コード

import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation

wb = openpyxl.load_workbook('C:/Utatane/input.xlsx')
ws = wb['Sheet1']

dv = DataValidation(type='whole', showErrorMessage=True)
dv.error = '整数のみを入力してください。'

ws.add_data_validation(dv)
dv.add('A1')

wb.save('C:/Utatane/output.xlsx')
dv = DataValidation(type='whole', showErrorMessage=True)
dv.error = '整数のみを入力してください。'

ws.add_data_validation(dv)
dv.add('A1')

実行結果

実行見本

事前準備

  • openpyxlのインストール

既存のエクセルファイルを編集するには「openpyxl」のインストールが必要です。

openpyxlのインストール方法

openpyxlを初めて使用する場合は、下記コードを入力・実行して、インストールしてください。

pip install openpyxl

※openpyxlを使用したことがある場合は、このインストール作業は不要です。

インストールに関する詳細や、インストールができなかった場合の対処法は下記記事で解説しております。
また、既存ファイルを開いて保存する方法など、基本解説も行っておりますのでご参考ください。

解説

※わかりやすさを重視しております。厳密には解釈が異なる場合がありますことをご了承ください。

インポート

まずはインポートの解説です。

import openpyxl
from openpyxl.worksheet.datavalidation import DataValidation

入力規則を設定するには、コード2行目(datavalidation)のインポートが必要です。
また、openpyxlを使用するため1行目のインポートも忘れず記述しましょう。

入力規則を設定

次に入力規則の設定方法の解説です。

dv = DataValidation(type='whole', showErrorMessage=True)
dv.error = '整数のみを入力してください。'

コードの7行目にて、「整数のみ受け付ける入力規則」を設定しています。
8行目は、整数以外が入力された場合に「エラーメッセージ」を表示させる設定です。

【コードの解説】
新しい名前の変数を書いたら、「=(イコール)」を書きます。

今回はわかりやすく「dv(datavalidationの略)」という変数名にしましたが、何でも構いません。
しかしながら、つけられない名前があったりしますので、下記記事をご参考ください。

イコールの後ろには、「DataValidation()」を書きます。
()内には、「入力規則のタイプ」「エラーメッセージ」を設定します。

【タイプ設定一覧】

  • type=’whole’:整数のみ
  • type=’decimal’:小数点を含む整数のみ
  • type=’date’:日付のみ
  • type=’time’:時間のみ
  • type=’textLength’:文字列の長さを指定(詳細は「さまざまな入力規則」の項参照)
  • type=’custom’:任意の数式(詳細は「さまざまな入力規則」の項参照)
  • type=’list’:ドロップダウンリストで選択(詳細は「さまざまな入力規則」の項参照)

【エラーメッセージ詳細】

  • showErrorMessage=True:エラーメッセージを表示させる
  • showErrorMessage=False:エラーメッセージを表示させない(入力規則しない)

※「showErrorMessage=False」にすると、入力規則が行われないためご注意ください

<入力規則の設定テンプレ>
【 変数 = DataValidation(type=’入力規則のタイプ’, showErrorMessage=True) 】


8行目で、エラーメッセージの内容を設定します。

【コードの解説】
入力規則を設定した変数(今回はdv)に続けて「.error」を書きます。
そしてイコールの後ろに、「表示させたいエラーメッセージ」を書きましょう。

エラーメッセージは「’(クォーテーション)」で囲ってください。

<エラーメッセージの設定テンプレ>
【 入力規則を設定した変数.error = ‘整数以外が入力された場合に表示させたいメッセージ’ 】

以上で入力規則の設定は完了です。
次に、設定した入力規則をワークシートに適用していきましょう。

入力規則を適用

ws.add_data_validation(dv)
dv.add('A1')

上記2行にて入力規則をワークシートに適用しています。

【コードの解説】
ワークシートが入った変数(今回はws)に続けて、「.add_data_validation()」を書きます。
()内には、入力規則を設定した変数(今回はdv)を書いてください。

これでワークシートに入力規則が適用されました。
次に、適用するセルを指定します。

入力規則を設定した変数(今回はdv)に続けて、「.add()」を書きます。
()内には適用するセル(今回はA1)を指定してください。

複数のセルに適用する場合は、「(‘A1:A5’)」というように指定できます。

適用するセルは、クォーテーションで囲ってください。

以上で入力規則の設定・適用が完了しました。
実行後に出力された「output.xlsx」を開いて、実際に数値以外を入力してみましょう。

数値以外を入力した場合の見本

エラーメッセージが表示されましたので、入力規則が適用されているのがわかります。
しかしながら、この規則では、「-1」や「10000」などは入力されてしまいます。

-1が入力された見本

次項では、もっと細かい入力規則を紹介いたします。

スポンサードリンク

さまざまな入力規則

ここからは、もっと制限された入力規則の設定方法を紹介いたします。

1以上の整数のみ許可(最低値・最高値の制限)

前項の7行目のみ抜粋して解説いたします。ご了承ください。

dv = DataValidation(type='whole', operator='greaterThan', formula1='1', showErrorMessage=True)

前項の見本から下記の2つが追加されただけです。

  • operator=’greaterThan’
  • formula1=’1′

「operator」の「greaterThan」は「○○以上」という意味で、「formula1」は指定を意味します。
なので、「1以上の整数のみ許可する」という意味になるわけです。
※「operator」や「formula1」の種類については後述

これで、「-1」は入力できなくなりました。

-1を拒否した見本

次に1~10までの整数のみ許可するようにしてみましょう。

1~10までの整数のみ許可(範囲の制限)

dv = DataValidation(type='whole', operator='between', formula1='1', formula2='10', showErrorMessage=True)

前項から、下記の3つが変更になっています。

  • operator=’between’
  • formula1=’1′
  • formula2=’10’

「between」は「最小値と最大値の間」という意味で、
「formula1」は「指定の値1」「formula2」は「指定の値2」という意味になります。
なので、「1~10までの間の整数のみ許可する」となるわけです。

10000を入力した場合の見本

【operatorの種類】

  • operator=’greaterThanOrEqual’:指定した値以上
  • operator=’lessThanOrEqual’:指定した値以下
  • operator=’greaterThan’:指定した値より大きい
  • operator=’lessThan’:指定した値より小さい
  • operator=’between’:指定した値の間
  • operator=’notBetween’:指定した値の間以外
  • operator=’equal’:指定した値と等しい
  • operator=’notEqual’:指定した値と等しくない

formula1formula2役割

  • formula1:指定の値1
  • formula2:指定の値2

typeに「textLength」「custom」を指定している場合は、「formula1・2」で文字列の長さなどを指定できます。

dv = DataValidation(type='textLength', operator='lessThanOrEqual', formula1='10', showErrorMessage=True)
#10文字以下の文字列のみ許可
dv = DataValidation(type='custom', formula1='MOD(A1,2)=0', showErrorMessage=True)
#偶数のみ許可

ドロップダウンリストで選択

入力する人がよりわかりやすいように、ドロップダウンリストで選択させることもできます。

dv = DataValidation(type='list', formula1='"選択肢1,選択肢2,選択肢3"', showErrorMessage=True)
ドロップダウンリストで入力規則を設定した場合の見本

入力規則に関する設定は以上です。
うまく動作しない場合は、次項を参考に対処していきましょう。

スポンサードリンク

うまく動作しない場合の対処法

エラーが出る

No such file or directory: ○○

これは、読み込むファイルやフォルダが見つからないというエラーです。
読み込むファイルのファイル名と構文のファイル名が一致しているか確認しましょう。

詳しい解説は、下記記事をご参考ください。

Permission denied: ○○

操作しようとしているファイルにアクセスできないというエラーです。
ファイルを開いている状態なので編集できない」と言っていることが多いので、開いていれば閉じて再度トライしましょう。

詳しい解説は、下記記事をご参考ください。

Worksheet ○○ does not exist

「指定したシートがありません」というエラーです。
指定のシート名が間違っていないか、「sheet1」など先頭が小文字になっていないか確認しましょう。

詳しい解説は、下記記事をご参考ください。

○○ is not defined

今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。

詳しい解説は、下記記事をご参考ください。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

スポンサードリンク

最後に

openpyxlで入力規則を設定する方法を解説いたしました。

当ブログでは、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

タイトルとURLをコピーしました