Python Openpyxl未正确使用公式
我目前正在使用以下python代码在更新单元格编号时将公式放入每个单元格中:Python Openpyxl未正确使用公式,python,python-3.x,openpyxl,Python,Python 3.x,Openpyxl,我目前正在使用以下python代码在更新单元格编号时将公式放入每个单元格中: for i in range(3, 202): ws['C{}'.format(i)].value = "=AVERAGE('*Location to file*'!E{0}, '*Location to file*'!H{0}, '*Location to file*'!E{0}, '*Location to file*'!H{0}, '*Location to file*'!E{0}, '*Location
for i in range(3, 202):
ws['C{}'.format(i)].value = "=AVERAGE('*Location to file*'!E{0}, '*Location to file*'!H{0}, '*Location to file*'!E{0}, '*Location to file*'!H{0}, '*Location to file*'!E{0}, '*Location to file*'!H{0})".format(i)
但我在Excel中得到的只是#Div/0!错误。如果我手动将准确的代码放入Excel,我会得到我想要的值 来自answers.microsoft.com
AVERAGE忽略空单元格以及包含文本的单元格,如空字符串(“”)。要避免#DIV/0错误,必须确保至少有一个数字要平均
此外,值必须是数字而不是文本
您一定在某个地方有字符串转换错误excel中的公式是什么样子的?“文件位置”前后的*有什么用?我想我不明白你的问题。“位置到文件”正是我放在堆栈溢出中的内容,因为我不想通过该位置复制到web上。所有的“文件位置”都是因为数据位于与我使用的不同的电子表格中,它还跨越Excel中的多个选项卡。您引用的单元格是否包含空白值或非数值?您可以使用
ws['C{}.format(i)].Formula=“=AVERAGE(…)”
。另一个优化可以是在一个单元格上编写公式并将其复制到其余的行中。我了解excel的工作原理,我知道平均值忽略空单元格,这就是为什么我在excel中执行此操作,而不是在python中对其进行平均。将结果粘贴到单元格中,因为python不会忽略空单元格。正确。我想指出的是,在平均公式中放置的任何东西都是作为字符串计算的<代码>“*到文件的位置*”!excel可能将E{0}解释为字符串,而不是对文件路径的引用。这可能是因为在excel表达式中使用了单引号。请记住,当您直接将数据输入excel时,它有一种“有用”的倾向。Enter00983和excel将愉快地将其转换为983。您可能必须对整个字符串使用三个双引号,并在公式“=Average”(“文件位置”!E{0}…)中使用双引号,这只会导致一个#值错误,我确实很困惑,但我认为这可能是一个Excel问题,因为如果我打开同一个电子表格,但手动填写公式(电子表格甚至不必保存)我的python工作正常,但一旦我关闭另一个电子表格,它就会再次崩溃:(