2017-01-03 6 views
0

"for i in range"ステートメントで計算された値を使用して、 "for i in range"ステートメントを使用して新しい値を計算します。しかし、「文字列を浮動小数点に変換できませんでした: 'E2 * 37.5'」別の計算で式の結果を使用する

計算式/文字列の代わりにsheet['F{}',format(i)] ='E{}*37.5'.format(i)で計算された数値を呼び出すにはどうすればよいですか?

import openpyxl 


wb = openpyxl.load_workbook('camdatatest.xlsx', read_only= False, data_only = True) 

# Assuming you are working with Sheet1 
sheet = wb['Sheet1'] 

for i in range(2,80): 
    sheet['D{}'.format(i)] = '=C{}/3'.format(i) 
for i in range(2,80): 
    sheet['F{}'.format(i)] = '=E{}*37.5'.format(i) 
for i in range(2,80): 
    sheet['H{}'.format(i)] = '=D{}*G2*50'.format(i) 
for i in range(2,80): 
    sheet['I{}'.format(i)].value = float(sheet['F{}'.format(i)].value)/float(sheet['H{}'.format(i)].value) 



wb.save('camdatatestoutput.xlsx' , data_only= True) 

答えて

2

残念ながらそれはそうかもしれ、他のライブラリがありますbecause

openpyxl never evaluates formula

かなりことはできません。しかし、ここで計算された値の代わりにもう1つのセル参照を使用できることを認識することで、問題を解決できます。

for i in range(2,80): 
    sheet['I{}'.format(i)] = '=E{}*37.5/H{}'.format(i,i) 

実際にExセルまたはHxセルの値がないため、1xセルの値を設定できないことに注意してください。 (あなたが持っているかもしれませんが、あなたの質問からは分かりません)

+0

ありがとう@ e4c5、完璧に動作します!私はゆっくりとハングを取得しています – applestooragnes

+1

助けになってうれしいです。あなたのプロジェクトでは最高のものです。 – e4c5

関連する問題