我正在尝试使用两个工作表创建一个Excel工作簿 - 我使用xlsxwriter在第一个工作表上输入数据,然后在第二个工作表上对该数据进行排名。当我打开工作簿时,排名有一个Excel名称?错误。如果我点击编辑栏中的公式的末尾,它正确计算,所以我不认为公式是不正确的..我怀疑它可能是某种操作的排序?我的Excel工作表设置为自动计算公式...我在网上找到的唯一类似的问题是xlsxwriter: add formula with other sheet in it,但我不知道解决方案是什么(如果它实际上是法国以外的其他东西英语问题) 这是我的代码的简化版本
import xlsxwriter
wb = xlsxwriter.Workbook('C:\Python33\ScoreTry.xlsx')
ws1 = wb.add_worksheet('RawScores')
ws2 = wb.add_worksheet('RankScores')
ws1.write(0,0,32)
ws1.write(1,0,39)
ws1.write(2,0,15)
for i in range (0,3):
x = 'IF(isblank(RawScores!A'+str(i+1)+'),"",RANK.AVG(RawScores!A'+str(i+1)+',RawScores!A$1:A$100,0))'
ws2.write_formula(i,0,x)
wb.close()
我的RankScores工作表有三个#NAME吗?错误而不是排名,直到我点击每个输入。任何想法都非常感激!
答案 0 :(得分:0)
RANK.AVG()
是在原始XLSX文件格式规范之后添加为“扩展名”的函数。 Microsoft documentation中定义了这些函数的列表。
因此,虽然公式显示为RANK.AVG()
,但它会以_xlfn.RANK.AVG()
的形式存储在文件中(如上一个文档中所列)。
如果您更改公式以使用该函数的前缀版本,它应该可以工作。
这是一个愚蠢但目前不可避免的解决方法(在模块中没有一些同样的kludgey解决方法)。对于它的价值,它记录在文档的write_formula()
部分。