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

我在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) 

有人可以帮我弄这个吗?

我不完全了解你的情况,所以我会解释一些可能性:

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

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

当您使用OpenPyXL阅读时,您必须select是否需要公式或结果。 这由data_only参数控制。 如果您只想要结果,请将其设置为True 。 如果您的工作簿保存在Excel中,因此同时具有公式和结果,那么在OpenPyXL中读取它们的方法是两次打开工作簿,一次使用data_only=False ,一次使用data_only=True 。 繁琐,但这就是OpenPyXL的devise。

如果您有来自scheme(2)的工作簿,并且列B仍然看起来像具有公式,那么最有可能尝试使用data_only=True打开工作簿将只返回列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) ws4.cell(row=i+1,column=2).value = ws4.cell(row=i+1,column=2).value 

作为参考.Value = .Value的行为与VBA中的Evaluate()函数类似吗? ?