2012-09-04 53 views
0

我需要得到“范围命名的”为一个特定的单元格中输入值,获得命名的范围为特定的细胞从Excel中。如何使用python

我进入“范围命名的”在Excel(A4,B4)单元格的值,以读取单元格的值,我们使用sh.cell(行,列),但如何获得该单元的名称范围值。

我没有得到该怎么办......

帮助我..谢谢提前

回答

0

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

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

你可以从Sheets.Cells(行,列).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 

工作表的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开始)。 而如果范围的大小(尺寸)是未知的,你可以使用内置的范围功能:

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

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

虽然,我不使用xlrd,而是我使用win32com.client驱动的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”,并从我的命名表“摘要”我能得到我的命名范围“avgVolume”

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