質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.42%
openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

Q&A

解決済

1回答

204閲覧

Python_openpyxl_name 'cell' is not definedの解決方法がわからない

Terahead283

総合スコア1

openpyxl

openpyxlは、Excel2007以降のファイル(xlsx/xlsm/xltx/xltm)を読み書きするためのPythonライブラリです。

0グッド

0クリップ

投稿2024/04/28 02:44

実現したいこと

openpyxlモジュールを使用して、特定の文字列の行列番号を取得したいです。

発生している問題・分からないこと

特定の文字列の行列番号を取得するプログラムを実行中、以下のエラーが発生しました。名前の定義はif文内で”cell = c.coordinate”のようにしたつもりですが、エラーが発生してしまいます。
ちなみに、このコードは”https://qiita.com/kibo_kibo/items/5cc78d35163f949b0a77”のサイトから引用しました。

エラーメッセージ

error

1 File "c:\Users\tsuba\OneDrive\デスクトップ\test001.py", line 20, in <module> 2 print("セル番地:"+ cell) 3 ^^^^ 4NameError: name 'cell' is not defined

該当のソースコード

#必要ライブラリのインポート import openpyxl # openpyxlを使ってエクセルファイルを開く workbook = openpyxl.load_workbook("book1.xlsx") # シートを取得,シート名はSheet1 ws = workbook["Sheet1"] # target_valueが一致するセルの座標を検索 # 100行100列の中に探したい文字列があるとして設定 for r in ws.iter_rows(max_row=100, max_col=100): # 列を一つずつ探索 for c in r: # もしc.valueがtarget_valueと一致したらその行番号を返す if c.value == "Interest Income": #セル番地を指定する:M10 cell = c.coordinate #行数のみcell_nloc[1]を取得に格納 cell_row_n = openpyxl.utils.cell.coordinate_from_string(cell_nloc)[1] cell_col_m = openpyxl.utils.column_index_from_string(cell_nloc[0]) print("セル番地:"+ cell) print("セル行番号:"+ str(cell_row_n)) print("セル列番号:"+ str(cell_col_m))

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

Googleで「nameerror name is not defined python」と検索したが、今回の問題に対する解決策が見つからなかった。

補足

特になし

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroki-o

2024/04/28 02:59

cell_nlocをcellに変更するだけで、正しく動いています。 cellが無いのは、何らかの理由で、"Interest Income"という文字列を見つけられていないからです。 Excelファイルの場所と中身をご確認ください。
Terahead283

2024/04/28 03:12

cell_nlocをcellに修正し、他のエクセルファイルで試したたらできました。hiroki-oさんのおっしゃる通り、参照するエクセルファイルに問題があるようです。回答ありがとうございました。とても速いリスポンスにびっくりしています。大変助かりました。
Terahead283

2024/04/28 03:13

ベストアンサーに選びたいので同じ内容を回答欄に投稿いただけますでしょうか?
guest

回答1

0

ベストアンサー

Windows 11、Python 3.12.2で確認しました。
cell_nlocをcellに変更するだけで、正しく動いています。
cellが無いのは、何らかの理由で、"Interest Income"という文字列を見つけられていないからです。
Excelファイルの場所と中身をご確認ください。

投稿2024/04/28 03:18

hiroki-o

総合スコア681

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Terahead283

2024/04/28 03:19

cell_nlocをcellに修正し、他のエクセルファイルで試したたらできました。hiroki-oさんのおっしゃる通り、参照するエクセルファイルに問題があるようです。回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.42%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問