如何递增单元格? - 蟒蛇 - openpyxl

问题描述 投票:0回答:1

Python - Openpyxl - 增量单元格

我已经为此尝试了 4 种类型的代码,例如: 我已经在寻找各种各样的问题,但我仍然无法解决它

cc2 = 2
cc2i = 2
while cc2 < 5000:
    while cc2i < 5000:
        ws['c{}'.format(int(cc2))] = ArrayFormula("c{}:c{}".format(int(cc2), 5000), "=upper(Input!f{}".format(int(cc2i))+")")
        cc2 += 5
        cc2i += 1`

#or

cc2 = 2
cc2i = 2
while cc2 < 5000:
    while cc2i < 5000:
        ws['c{}'.format(str(cc2))] = ArrayFormula("c{}:c{}".format(str(cc2), 5000), "=upper(Input!f{}".format(str(cc2i))+")")
        cc2 += 5
        cc2i += 1

#or

for cc2 in range(2, 5000, 5):
    for cc2i in range(2, 5000, 1)
        ws['c{}'.format(int(cc2))] = ArrayFormula("c{}:c{}".format(int(cc2), 5000), "=upper(Input!f{}".format(int(cc2i))+")")

#or

for cc2 in range(2, 5000, 5):
    for cc2i in range(2, 5000, 1)
        ws['c{}'.format(str(cc2))] = ArrayFormula("c{}:c{}".format(str(cc2), 5000), "=upper(Input!f{}".format(str(cc2i))+")")

我期望得到的是

ws['c2'] = '=input!f2'
ws['c7'] = '=input!f3'
ws['c12'] = '=input!f4'

等等

但我得到的是

ws['c2'] = '=input!f2'
ws['c3'] = '=input!f2'
ws['c4'] = '=input!f2'

等等

python-3.x excel excel-formula excel-2010 openpyxl
1个回答
0
投票

看起来你想要的只是下面的代码示例; 在循环中;

  1. cc2 递增 5,直到 5000。从 2
  2. 开始 对于每个 cc2 增量,
  3. cc2i 递增 1。从 1
  4. 开始

因此在cell坐标中使用cc2;

ws[f'c{cc2}']

将引用单元格

ws[c2],ws[c7],ws[c12],ws[c17],ws[c22],ws[c27],ws[c32],ws[c37],ws[c42],ws[c47] ,ws[c52] ...

引用 F 单元格的相应公式将增加 1。不确定您的公式应该包含什么,因为您的代码说明了一件事,而您的预期和实际输出表明另一件事。
无论公式的组成如何,F 单元格引用都将是;

F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11...

示例代码

for cc2i, cc2 in enumerate(range(2, 5000, 5),1):
    ws[f'c{cc2}'] = f'=UPPER(Input!F{cc2i})'
© www.soinside.com 2019 - 2024. All rights reserved.