我需要为特定单元格输入“命名范围”值。
我在excel中为(A4,B4)单元格输入了“命名范围”值,要读取单元格值,我们使用 sh.cell(row,col) 但如何获取该单元格的名称范围值。
我不知道该怎么做...
帮帮我..提前谢谢
我需要为特定单元格输入“命名范围”值。
我在excel中为(A4,B4)单元格输入了“命名范围”值,要读取单元格值,我们使用 sh.cell(row,col) 但如何获取该单元格的名称范围值。
我不知道该怎么做...
帮帮我..提前谢谢
不幸的是,我没有足够的代表发表评论,所以我会尽我所能从你的问题中理解。
所以如果我做对了,你在工作表上有一个命名范围,其中范围的名称,由 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”中的所有值
这有帮助/您正在寻找什么?因为我不太确定你的问题到底是什么,所以我想我会尽可能多地得分。
from xlsxwriter.utility import xl_rowcol_to_cell
cell = xl_rowcol_to_cell(1, 2) # C2
print(cell)