0

我需要为特定单元格输入“命名范围”值。

我在excel中为(A4,B4)单元格输入了“命名范围”值,要读取单元格值,我们使用 sh.cell(row,col) 但如何获取该单元格的名称范围值。

我不知道该怎么做...

帮帮我..提前谢谢

4

2 回答 2

1

不幸的是,我没有足够的代表发表评论,所以我会尽我所能从你的问题中理解。

所以如果我做对了,你在工作表上有一个命名范围,其中范围的名称,由 sh.Range("A4:B4") 引用,是'name_a_range'(我包括下划线,因为你不能有名称中的空格)。

您可以从 Sheets.Cells(row, col).Value 获取值,但您希望通过命名范围来执行此操作。

好的,要做到这一点:

    Dim valA as Variant, valB as Variant
    Dim valArray() as Variant
    '' To get the value in Cell "A4"
    valA = sh.Range("name_a_range").Cells(1,1).Value

    '' To get the value in Cell "B4"
    valB = sh.Range("name_a_range").Cells(1,2).Value

    '' Or if you have a Variant() array already Dim'ed (like above)
    valArray = sh.Range("name_a_range").Value

Worksheet 的 Range 对象可以采用:

    '' Expression for a range: "A4" to "B4" , using Cells
    sh.Range(sh.Cells(4,1),  sh.Cells(4,2)) 

    '' Expression for a range: "A4" to "B4" , using xlA1 format
    ''  *Which is the most familiar
    sh.Range("A4:B4")

    '' Expression for a range: "A4" to "B4" , using name
    sh.Range("PreviouslyNamedRange")

对于任何范围,您都可以将其视为它自己的数组(从位置 1 开始)。如果范围的大小(维度)未知,您可以使用内置的 Range 函数:

    sh.Range("name_a_range").Rows.Count '' returns 1
    sh.Range("name_a_range").Column.Count '' returns 2

至于标题中的 Python 方面,您将使用相同的语法:

虽然,我不使用 xlrd,而是使用 win32com.client 通过 python 驱动 Excel

    from win32com.client import Dispatch
    app_xl = Dispatch("Excel.Application")
    wb = app_xl.Workbooks.Open("Path\\To\\Your\\Workbook.xlsx")
    range = wb.Sheets(1).Range("name_a_range").Value

例如,我在我的一张表格上运行了这个:

    >>> from win32com.client import Dispatch
    >>> app_xl = Dispatch("Excel.Application")
    >>> wb = app_xl.Workbooks.Open("C:\***\***\excel_vba_tests\getinfo.xlsx")
    >>> rangeValues = wb.Sheets("Summary").Range("avgVolume").Value
    >>> rangeValues
    ((u'Avg/Wk',), (Decimal('791517.25'),), (Decimal('796369'),), (Decimal('769922.8846'),), (Decimal('743311.549'),))

在这里,我打开了我的工作簿“getinfo.xlsx”,并从名为“Summary”的工作表中获取了命名范围“avgVolume”中的所有值

这有帮助/您正在寻找什么?因为我不太确定你的问题到底是什么,所以我想我会尽可能多地得分。

于 2012-10-25T19:56:48.447 回答
0
from xlsxwriter.utility import xl_rowcol_to_cell

cell = xl_rowcol_to_cell(1, 2)  # C2

print(cell)
于 2018-05-30T05:45:36.040 回答