1

我有一个电子表格,其中 A 列包含日期。我正在使用公式来查看 A1 和 A2、A1 和 A3 等之间的天数差异,使用 B 列中的这个 excel 公式。

=datedif(A1,$A1$1,"D") 

在excel中手动向下拖动时,它变为

=datedif(A2,$A$1,"D")

但是,我的脚本将原始公式填充到所有 B 列中,保留 A1 而不是向下移动到 A2、A3 等。这是我的脚本。

for row in ws8.iter_rows(min_col=2, max_col=2, min_row=1):
    for cell in row:
        cell.value = '=datedif(A1,$A$1,"D")'
4

2 回答 2

0

小心包含一个max_row值,如果你知道的话。

ws8 = wb.active
for i,row in enumerate(ws8.iter_rows(min_col=2, max_col=2, max_row=10)):
    for cell in row:
        cell.value = f'=datedif(A{i+1},$A$1,"D")'

对于旧版本的 python,没有 f 字符串:

ws8 = wb.active
for i,row in enumerate(ws8.iter_rows(min_col=2, max_col=2, max_row=10)):
    for cell in row:
        cell.value = '=datedif(A{},$A$1,"D")'.format(i+1)

输出

输出

于 2020-01-30T21:25:57.183 回答
0

您将其粘贴为字符串,然后将其转换为公式。我不知道 python contatenation 是否有效,但您需要在其中传递行号:

howcell.value = '=datedif(A'+ row ',$A$1,"D")'
于 2020-01-30T21:41:11.120 回答