使用由公式编写的单元格中的值

2024-10-06 08:56:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Excel中有两列。第一个(C列)有带值的单元格,第二个单元格(B列),我用一个脚本用Excel公式从第一个单元格中提取一些值。在

现在我想使用另一列中第二列中的值,脚本没有任何错误,但给了我空单元格,因为第二列包含公式。在

是否可以粘贴值或仅从第二列提取值?在

这是我的代码:

for i in range(0,len(listaunica)):
ws4.cell(row=i+1,column=3).value=listaunica[i]


for i in range(0,len(listaunica)):
    ws4.cell(row=i+1,column=2).value='=iferror(find(".",C{0}),C{0})'.format(i+1)

有人能帮我吗?在


Tags: in脚本forlenvalue粘贴错误cell
2条回答

试试这个

for i in range(0,len(listaunica)):
ws4.cell(row=i+1,column=3).value=listaunica[i]
for i in range(0,len(listaunica)):
ws4.cell(row=i+1,column=2).value='=iferror(find(".",C{0}),C{0})'.format(i+1)
ws4.cell(row=i+1,column=2).value = ws4.cell(row=i+1,column=2).value

供参考Does .Value = .Value act similar to Evaluate() function in VBA??在

我不完全了解您的情况,因此我将解释一些可能性:

(1)您有一个Excel工作簿,该工作簿是用Excel本身保存的。在这种情况下,B列应该有两个公式和这些公式的结果,因为Excel会计算它们。在

(2)您有一个使用其他方法保存的Excel工作簿,例如由OpenPyXL编写,但尚未被Excel打开和保存。在本例中,您很可能将公式结果存储在列B中

当你使用OpenPyXL阅读时,你必须选择你想要的是公式还是结果。这由data_only参数控制。如果只需要结果,请将其设置为True。如果您的工作簿保存在Excel中,因此包含公式和结果,那么在OpenPyXL中读取它们的方法是打开工作簿两次,一次使用data_only=False,一次使用{}。虽然笨重,但OpenPyXL就是这样设计的。在

如果您有场景(2)中的工作簿,而B列看起来仍然包含公式,则使用data_only=True打开工作簿很可能只会为B列返回0。只有在Excel中打开工作簿并保存它,才能从中获取结果。在

相关问题 更多 >