引用单元格

引用单元格,即找到单元格。这是进行后续操作的前提。下面分引用单个单元格、多个单元格、活动单元格、用名称引用和用变量引用等多种情况进行介绍。

引用单个单元格

使用工作表对象的Range(range, api.Range)和Cells(cells, api.Cells)属性引用单个单元格。下面引用和选择工作表sht中的单元格A1:

code.python
>>> sht.Range("A1").Select()
>>> sht.Cells(1, "A").Select()
>>> sht.Cells(1,1).Select()

引用多个单元格

使用工作表对象的Range(range, api.Range)属性引用多个单元格,引用时,将各单元格坐标组成的字符串作为参数即可。下面引用和选择工作表sht中的单元格B2, C5和D7:

code.python
>>> sht.Range("B2, C5, D7").Select()

效果如图2-1所示。

Document Image

图2-1 引用和选择多个单元格

引用当前单元格

使用win32com包时,使用Application对象的ActiveCell引用当前活动工作簿中活动工作表内的活动单元格。下面给工作表sht中的单元格C3添加值3.0,选择它,然后用Application对象的ActiveCell获取当前单元格的值。

code.python
>>> sht.Range("C3").Value=3.0
>>> sht.Range("C3").Select()
>>> app.ActiveCell.Value
3.0

用单元格的名称进行引用

如果单元格有名称,可以用它的名称进行引用。下面首先将单元格C3的名称设置为test,然后用该名称引用此单元格。

code.python
>>> cl=sht.Range("C3")
>>> cl.Name="test"
>>> sht.Range("test").Select()

用变量进行引用

在编程过程中,常常需要动态设置单元格的坐标,这就要用到变量。使用单元格对象的Range属性引用单元格时,可以将行号或列号的数字部分转换成字符串,然后组合成一个完整的坐标字符串进行引用。使用Cells属性时如果有必要也进行相应的处理,转换数据类型即可。下面用变量引用单元格C3。

code.python
>>> i=3
>>> sht.Range("C"+ str(i)).Value
>>> sht.Cells(i,i).Value

引用整行和整列

引用整行,可以使用工作表对象的Rows属性和Range属性实现。Rows属性有一个参数,指定要引用行的行号。使用Range属性时,可以将“行号:行号”形式的字符串作为参数进行引用;或引用该行上的任意一个单元格后接着引用其EntireRow属性获取整行。下面引用和选择第一行:

code.python
>>> sht.Rows(1).Select()
>>> sht.Range("1:1").Select()
>>> sht.Range("A1").EntireRow.Select()

引用多行时,使用方法跟引用单行的类似,只是需要指定起始行和终止行的行号,中间用冒号隔开。使用EntireRow属性时,指定所在连续多行上占据所有行的任意区域即可。下面引用和选择工作表sht上的第1-5行:

code.python
>>> sht.Rows("1:5").Select()
>>> sht.Range("1:5").Select()
>>> sht.Range("A1:C5").EntireRow.Select()

引用整列,使用工作表对象的Columns属性和Range属性实现。Columns属性有一个参数,指定要引用列的列号,可以用数字或字母表示。使用Range属性时,可以将“列号:列号”形式的字符串作为参数进行引用;或引用该列上的任意一个单元格后接着引用其EntireColumn属性获取整列。下面引用和选择第一列:

code.python
>>> sht.Columns(1).Select()
>>> sht.Columns("A").Select()
>>> sht.Range("A:A").Select()
>>> sht.Range("A1").EntireColumn.Select()

引用多列时,使用方法跟引用单列的类似,只是需要指定起始列和终止列的列号,中间用冒号隔开。使用EntireColumn属性时,指定所在连续多列上占据所有列的任意区域。下面引用和选择工作表sht上的B-C列:

code.python
>>> sht.Columns("B:C").Select()
>>> sht.Range("B:C").Select()
>>> sht.Range("B1:C2").EntireColumn.Select()