エラー解決:TypeError: int() argument must be a string, a bytes-like object or a real number, not ‘NoneType’

エラー解決:TypeError: int() argument must be a string, a bytes-like object or a real number, not ‘NoneType’

Pythonでこんなエラーが発生したけど、どんな意味なのか、またどうやって対処したらいいのか、私の場合を例にご紹介したいと思います。

どんな時に発生したか

目標の処理

Excelのセル左上に緑の三角形が入っている(文字列になっている)のを、Pythonで数値に変換しようとしたときに、今回のエラーが発生しました。

その時のコードは次のとおり。

エラーが発生した時のコード

エラーメッセージからわかること

TypeErrorと出ており、処理しようとしている値の型(type)が適切ではないとのこと。 

7行目で数値に変換しようとしている部分でエラーが発生している。

メッセージからわかることは、’NoneType’はint()には渡せません(数値に変換できません)と言われています。

None Typeとは「値が存在しない」ということなので、元のExcelを見直したところ、5行目と8行目が空白でした。

エラーの原因

エラーを解決した方法

値が入っていないセルがあった場合は、処理をスキップするように修正しました。

7、8行目に修正用のコードを追加。

import openpyxl

wb=openpyxl.load_workbook("価格表.xlsx")
ws=wb.worksheets[0]

for i in range(2,10):
    if ws.cell(i,1).value is None:
            continue
    ws.cell(i,1).value=int(ws.cell(i,1).value)
    
wb.save("価格表.xlsx")

処理が無事完了しました!

参考になれば幸いです。

ABOUT US
中野友梨
旅行業の会社を運営。
慶応義塾大学卒

書類作成、確認作業などに追われる日々の仕事。
一生懸命やっているつもりだった。
計算ミス、手配ミスにヒヤヒヤする日々。
仕事の効率をなんとかしなけらばいけないと思っていたけど、 どうしたらよいのか分からなかった。
Pythonの世界なんて、全く知らなかった。
そんな私がPythonで仕事が効率化されることによって、公私ともに大きく 変わるとは、夢にも思っていなかった..。

業務効率化のためにPythonを始めたことがきっかけで、Pythonにはまりました。(個人利用レベル)
詳細はこちら

労働時間が大きく削減され、仕事が大カイゼンされて自由な時間も生まれました。
私のした素晴らしい経験を共有したい、仕事の効率が悪いけど、どうにかしたいという悩みを持った人々に向けて、 Pythonがいいよ、と教えてあげたい。
このブログでは、私が経験したエラー解決や迷い所、Pythonの活用方法をお伝えします。