2012-09-04 56 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」

所有的值是這是很有幫助的/你正在尋找?由於我不太確定你的問題到底是什麼,我想我會盡可能多地得分。