0

我正在使用 xlwings 并试图对两个单元格 A1 + B1 求和,并将输出输入到第三个单元格 C1 中。我想对范围 (A1->A9) + (B1->B9) 执行此操作,并将它们写入单元格 (C1->C9)。我当前的命令是 Range('C3').value = [sum(x) for x in zip(Range('A3:A9').value, Range('B3:B9').value)] 这将值相加正确,但答案水平写入单元格 C3-I3。我知道命令 Range('A1').value = [[1],[2],[3],[4],[5]] 会垂直列出列表的元素,但我不知道如何将其合并到我的命令中。

任何帮助,将不胜感激

4

3 回答 3

1

使这更容易是一个悬而未决的问题。对于简单列表,您可以执行以下操作(请注意,在 Python 2 上,您不需要listaround zip

Range('C3').value = list(zip([sum(x) for x in zip(Range('A3:A9').value,
                              Range('B3:B9').value)]))

如果你已经numpy安装了,同样可以这样实现:

import numpy as np
Range('C3').value = (Range('A3:A9', asarray=True).value + 
                     Range('B3:B9', asarray=True).value)[:,np.newaxis]
于 2015-02-02T21:39:15.057 回答
1

试试这个代码:

import xlwings as xw
sht = xw.Book().sheets[0]
sht.range('C3').options(transpose=True).value \
=[sum(x) for x in zip(sht.range('A3:A9').value, sht.range('B3:B9').value)]
于 2021-01-21T20:01:08.493 回答
0

要使值在 Excel 中垂直打印出来,您只需将它们转换为列表,最终获得列表列表,正如您所描述的那样。

from xlwings import Workbook, Range
wb = Workbook('example.xlsx')
a_col = Range('A1').vertical.value # or Range('A1:A9').value if you wish
b_col = Range('B1').vertical.value
c_col = zip(a_col, b_col)
c_col = [[sum(x)] for x in c_col]  # use '[]' here inside of list constructor
Range('C1').value = c_col
wb.close()
于 2016-05-30T12:57:56.553 回答