如何将范围对象从xlwings函数返回Excel,以便在公式中使用?

2024-10-04 05:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在xlwings中创建一个简单的函数,它以单元格的形式接受一个范围对象,计算出该单元格列中包含数据的最后一个单元格是什么,然后返回从该单元格到包含数据的最后一个单元格的范围。然后我希望能够在Excel的公式中使用此范围

我的问题是,我无法将返回值设置为excel可以处理的可用范围对象。我该怎么做

我的函数是(函数colnum_string只是将数字列转换为excel列字母):

@xw.func
@xw.arg('start', 'range')
@xw.ret('end_range', 'range')
def CELLTOEND(start):
    column = colnum_string(start.column)
    row = start.row
    sheet = start.sheet
    end_row = xw.sheets[sheet].range(column + str(xw.sheets[sheet].cells.last_cell.row)).end(
        'up').row + 1
    end_range = xw.Range(column + str(row) + ":" + column + str(end_row))
    return end_range

此函数给我一个编译错误:xlret()接受0到1个位置参数,但给出了2个

我还试图不将end_cell创建为Range对象,但没有效果,最后返回为end_cell.formula,它确实返回范围,但是如果该范围包含从1到7的数字,我就不能对其使用SUM并得到28的结果


Tags: 数据对象函数stringcellrangecolumnexcel
1条回答
网友
1楼 · 发布于 2024-10-04 05:24:06

最后我做了这件事,这似乎对我的案子起到了作用:

@xw.func
@xw.arg('start', 'range')
@xw.ret(transpose=True)
def CELLTOEND(start):
    end=start.end('down')
    end_range=xw.Range(start,end)
    return end_range.value

相关问题 更多 >