我在 Excel 中通过 Python openpyxl 正确导出公式时遇到问题。我想在 Excel 中导出某个范围内的平均值和 75% 四分位数的公式。我使用的是德语 Excel 版本。这对于平均值来说效果很好,这里英语公式“=AVERAGE(A2:A7)”显示为德语公式“=MITTELWERT(A2:A7)”。不幸的是,这不适用于 75% 四分位数,这里英文公式“=QUARTILE.INC(A2:A7,75%)”显示为“[email protected](A2:A7;75%)”,这会导致 Excel 中出现错误,而不是像德国公式“=QUARTILE.INKL(A2:A7; 0,75)”那样有效。 这是示例代码:
import pandas as pd
import os
# Change directory
directory = r'C:\Users\abc\Desktop\Test Formula'
os.chdir(directory)
# Create dataframe
data = {
'Test1': [1, 2, 3, 4, 5, 6],
'Test2': [16.46, 17.21, 14.98, 21.3, 89.1, 71.77]
}
data['Test1'].append('=AVERAGE(A2:A7)')
data['Test2'].append('=AVERAGE(B2:B7)')
data['Test1'].append('=QUARTILE.INC(A2:A7,75%)')
data['Test2'].append('=QUARTILE.INC(B2:B7,75%)')
df = pd.DataFrame(data)
# Create an Excel file
output_file = os.path.join(directory, "Output.xlsx")
with pd.ExcelWriter(output_file, engine='openpyxl') as writer: # Specify engine='openpyxl'
df.to_excel(writer, sheet_name='Test_Output', index=False)
在(德语)Excel 中,此代码将生成以下公式/评估:
=MITTELWERT(A2:A7)(正确评估为 3.5),
[电子邮件受保护](A2:A7;75%)(对 #NAME 的计算结果不正确?)
而不是 [email protected](A2:A7;75%),应该是 =QUARTILE.INKL(A2:A7; 0,75) (正确计算结果为 1)。 有谁知道为什么这段代码不能在 Excel 中生成正确的公式?
您需要添加
_xlfn.
以下应该有效:
data['Test1'].append('=_xlfn.QUARTILE.INC(A2:A7,75%)')
data['Test2'].append('=_xlfn.QUARTILE.INC(B2:B7,75%)')