アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルファイル内のA列に10桁の英数字が複数行あります、
それをPythonですべてスライスしたいのですが動作しません。
TypeError: 'int' object is not subscriptable
とエラーが出ますが結局どうしたらよいかわかりませんでした。

import openpyxl as px

wb = px.load_workbook(r"C:\Users\〇〇〇\Desktop\テスト.xlsx")
ws = wb["Sheet1"]

lastrow = ws.max_row

for i in range(2, lastrow + 1):
  suraisu = ws['A' + str(i)].value
  suraisu [2:5]

  break


def save():
  wb.save(filename = (r"C:\Users\〇〇〇\Desktop\テスト.xlsx")
save()


お詳しい方教えてください、宜しくお願いいたします。

質問者からの補足コメント

  • ご回答ありがとうございます。

    他の処理も含めてPythonのみで行いためご質問させていただきました。
    この場合はA1では「A123」になれば正解です。
    質問の内容がずれていたらすいません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2022/08/28 20:46

A 回答 (3件)

A列の2行目から


各セルの3文字目~5文字目を、そのセルに格納すると理解しました。
(先頭は1文字目です)
下記にアップしました。
https://ideone.com/Ia6xjr
    • good
    • 0
この回答へのお礼

ありがとうございました!ばっちりでした。

お礼日時:2022/08/31 12:06

openpyxlでは無理じゃないかな。


読み込む行の中に数字だけで構成された行がある場合、その行では
> suraisu = ws['A' + str(i)].value
の返値がint型になってます。文字列で得る方法は分かりません。
pandasを使ってpandas.DataFrameとして読み込む方が良いのではないですかね。pandas.read_excelでdtype='str'指定で読み込めば文字列要素のデータフレームとして読み込んでくれるはず。
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2022/08/31 12:07

すみません。


スライスするとはどういうことでしょうか。
添付図のようになっていた時、どのような結果を期待しているのでしょうか。
又、VBAで行ってはいけないのでしょうか。
「Pythonでエクセルファイルの列を指定」の回答画像1
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!