2016-03-20 123 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)) ' –