如何 return 从 xlwings 函数到 Excel 的范围对象,以便它可以在公式中使用?

How to return a range object from an xlwings function to Excel so that it can be used in formulas?

我正在尝试在 xlwings 中创建一个简单的函数,它采用单元格形式的范围对象,计算出该单元格列中带有数据的最后一个单元格是什么,然后 return s 从单元格到最后一个有数据的单元格的范围。然后我希望能够在 Excel.

的公式中使用这个范围

我的问题是我无法将 return 值设为 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 对象,但无济于事,最后 returning 为 end_cell.formula,return 范围,但如果该范围包含比方说 1-7 的数字,然后我不能对其使用 SUM 并得到 28

的结果

我最终这样做了,这似乎适合我的情况:

@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