maxliu06 发表于 2020-6-22 16:12:54

openpyxl 写公式 问题。

如图所示,我想在D列中写下一个公式,。根据B列与C列 , 得到D 列的值 .

suchocolate 发表于 2020-6-22 16:33:20

暂时只知道单个单元格填入公式的方式:
ws["d1"] = "=(b1+c1)/b1"

maxliu06 发表于 2020-6-22 16:46:55

suchocolate 发表于 2020-6-22 16:33
暂时只知道单个单元格填入公式的方式:

有没有更加便捷的方法, 我可以让D列,整列都是这个公式?
而不是单个单元格的来。。

suchocolate 发表于 2020-6-22 17:22:10

本帖最后由 suchocolate 于 2020-6-22 17:24 编辑

maxliu06 发表于 2020-6-22 16:46
有没有更加便捷的方法, 我可以让D列,整列都是这个公式?
而不是单个单元格的来。。

openpyxl貌似没有(openpyxl官网上没找到),你可以设置一个for循环解决。

另外如果你觉着麻烦可以用VBA,他支持列自动填充公式:Sub Macro1()
'
' Macro1 Macro
'

'
    Range("D3").Select
    Range("D3").Formula = "=(B1+C1)/B1"
    Selection.AutoFill Destination:=Range("D3:D22")
End Sub

maxliu06 发表于 2020-6-22 17:30:26

suchocolate 发表于 2020-6-22 17:22
openpyxl貌似没有(openpyxl官网上没找到),你可以设置一个for循环解决。

另外如果你觉着麻烦可以 ...

vba不懂。。。

for 循环也想过了,但是这变量得写在公式里面,这不起作用呢。。

suchocolate 发表于 2020-6-22 17:46:58

maxliu06 发表于 2020-6-22 17:30
vba不懂。。。

for 循环也想过了,但是这变量得写在公式里面,这不起作用呢。。

for item in range(3, 22):
    num = str(item)
    ws['d' + num] = "=(b%d+c%d)/b%d" % (item, item, item)

txxcat 发表于 2020-6-22 17:59:56

本帖最后由 txxcat 于 2020-6-22 18:01 编辑

把公式作为字符串写入到单元格里就可以了,我没理解错的话这样写:
from openpyxl import load_workbook
from openpyxl import Workbook
wb=load_workbook('test1.xlsx')
sheet_name = 'Sheet1'
ws=wb
for i in range(3,6):
    ws['D'+str(i)] = '=(B%d+C%d)/B%d' % (i,i,i)
wb.save('test2.xlsx')   
wb.close()
效果,看看是不是你需要的结果:

BIO-张磊 发表于 2020-6-23 08:23:00

pandas库有
自定义一个函数,再利用pandas的apply方法应用进去
页: [1]
查看完整版本: openpyxl 写公式 问题。