前提・実現したいこと
初期値を入力したファイル(test.xlsx)を用意して、芋ずる式に計算させる
→出てきた値のF列における絶対値が最大の数値を絶対値のままM列の指定したセルに入れる。
→初期値の値をパラメータを使って変化させ、それに対応した絶対値の最大の数値をM列に上から順番に入れていく。というのを600パラメータ分繰り返す。
発生している問題・エラーメッセージ
最大の絶対値を求める際に"=MAX(ABS(F1:F3000))"とエクセルのセルに入力させるように命令しているが、出力されたエクセルファイルを見ると、"=MAX(ABS(@F1:F3000))"と変換されてしまう。(→excelの問題?)
M列にパラメータごとの最大の絶対値を並べたいのだが、セーブされたファイルを見るとjが600のときのF列の数値600個をただ並べただけになってしまっている。
エラーメッセージ
特になし
該当のソースコード
Python
ソースコード
import openpyxl
#ファイルの呼び出し
XLSFILE = r"C:\Users\NAME\PycharmProjects\test\test.xlsx"
wb = openpyxl.load_workbook(XLSFILE, data_only=True)
ws_template = wb["Sheet1"]
#値の追加
for j in range(1,601):
for i in range(1, 3001):
ws_template.cell(row=i+1, column=10).value = "=(2000000*((-1)G{}+(6E{}/0.02)+3D{})+(PI()300000000/{})(3E{}+(0.02D{}/2)))/(10000000+(3(PI()30000000/{})/0.02)+(62000000/0.0004))".format(i, i, i, j, i, i, j)
ws_template.cell(row=i+1, column=9).value = "=(3J{}/0.02)-3E{}-(0.02D{}/2)".format(i+1, i, i)
ws_template.cell(row=i+1, column=8).value = "=(6J{}/0.0004)-(6E{}/0.02)-3D{}".format(i+1, i, i)
ws_template.cell(row=i+1, column=6).value = "=F{}+J{}".format(i, i+1)
ws_template.cell(row=i+1, column=5).value = "=E{}+I{}".format(i, i+1)
ws_template.cell(row=i+1, column=4).value = "=D{}+H{}".format(i, i+1)
if i ==3000:
ws_template.cell(row=j, column=13).value = "=MAX(ABS(F1:F{}))".format(i+1)
#データの保存(xlsx)
wb.save(XLSFILE)
試したこと
名前を付けてファイルを保存にして、どのように保存されているかを追ったが、ws_template.cell(row=j, column=13).value = "=MAX(ABS(F1:F{}))".format(i+1)の部分で、一つのjに対して、一つの最大の絶対値をM列の指定したセルに入力するようにしたつもりだが、M列のそれ以外のセルにも値が上書きされて入ってしまっていることが分かった。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/30 05:33
退会済みユーザー
2021/05/30 05:38 編集