2016-03-20 161 views
0

嗨,並提前感謝你。Python:將變量傳遞給範圍()

在Visual Studio 2015年使用Python 3.4,閱讀從Excel 2007

/寫展望傳遞變量:

mylastrow ='$A$70006' # this address is not hard coded. it will be from an 'input' 

加入上述範圍下面的表達式就是我的失敗:

myrange = xlwings.Range('Sheet1', 'A2:' & lastrow).value 

我嘗試了這些:

myrange = xlwings.Range('Sheet1', 'A2:' & lastrow) 
myrange = xlwings.Range('Sheet1', 'A2:' + lastrow).value 
myrange = xlwings.Range('Sheet1', 'A2:' + lastrow) 
myrange = xlwings.Range('Sheet1', 'A2:' & str(lastrow)).value 
myrange = xlwings.Range('Sheet1', 'A2:' & int(lastrow)).value 
myrange = xlwings.Range('Sheet1', 'A2:' + str(lastrow)).value 
myrange = xlwings.Range('Sheet1', 'A2:' + int(lastrow)).value 
myrange = xlwings.Range('Sheet1', 'A2', 'A' & lastrow).value 
myrange = xlwings.Range('Sheet1', 'A2', 'A' & lastrow).value 

我不斷收到:「不支持的操作類型爲&:‘海峽’和'廉政」 或「無法將‘詮釋’對象隱含str的」

當然,他們是後一起,地址應該看起來像A2:$ A $ 70006

即使您只是有一個可能的解決方法列表的鏈接或只是「這不能完成」。一切都會好起來的。再次感謝你。

ps。對於論壇本身,如果我應該以另一種方式提出這個問題,或者應該以另一種方式進行構建,請讓我知道,以便我可以修復它。再次感謝你。

回答

1

試試這個

mylastrow ='$A$70006' 
... 
myrange = xlwings.Range('Sheet1', 'A2:{0}'.format(mylastrow)).value 

更多python 3 string formatting可以從這裏讀取。

+0

Hi Ance。這工作。我感謝你,並且要去了解format()是如何工作的,以便將來能夠充分利用它。謝謝。 PS。我試着:Range('Sheet1','A2:%s'%lastrow)和Range('Sheet1','A2:A%d'%lastrow),其中'lastrow'= 70006,但沒有任何工作。非常感謝。 – Jim

+0

如果你像使用Range('Sheet1','A2:%s'%str(mylastrow)).value一樣,%字符串格式化也可能起作用,但是你必須注意傳遞正確類型的參數(數字,string,...)。那str.format()更像是python 3的方式來做到這一點。無論如何,沒有問題,我很樂意幫助你:) – Ance

+0

@Jim你可能想使用xlwngs的能力來解決單元格索引而不是地址,例如:Range((1,1),(10,10)) ' –