wxiaow

V1

2023/01/03阅读:22主题:兰青

单元格蕴含的设计哲学

单元格蕴含的设计哲学

在使用Excel处理数据的时候,经常会遇到了以下几种情况,使用频率也特别高:

1、对当前单元格进行定位,即获取当前单元格的行列编号;

2、记录当前工作表的记录条数,即获取当前工作表的最后一行单元格的行号;

3、选取当前单元格的上、下、左、右间隔的单元格,如获取当前单元格右侧间隔2个单位的新单元格;

4、重新框选单元格的大小,即扩大或缩小已选单元格区域的范围;

对单元格进行定位

Row属性

获取单元格所在的行号,或者获取单元格区域所在的行号。

# 单元格
range("A1").Row '获取A1单元格的行号 -> 1
[A1].Row '获取A1单元格的行号 -> 1
Cells(1,1).Row '获取A1单元格的行号 -> 1

# 单元格区域
range("A1:C9").Row '获取A1:C9单元格区域的行号,其实就是返回A1:C9左上角单元格A1的行号 -> 1
[A1:C9].Row '获取A1:C9单元格区域的行号,其实就是返回A1:C9左上角单元格A1的行号 -> 1

Column属性

# 单元格
range("A1").Column '获取A1单元格的列号 -> 1
[A1].Column '获取A1单元格的列号 -> 1
Cells(1,1).Column '获取A1单元格的列号 -> 1

# 单元格区域
range("A1:C9").Column '获取A1:C9单元格区域的列号其实就是返回A1:C9左上角单元格A1的列号 -> 1
[A1:C9].Column '获取A1:C9单元格区域的列号,其实就是返回A1:C9左上角单元格A1的列号 -> 1

注:

获取单元格区域所在的行号,返回单元格区域左上角的单元格的行号,列同上。

记录工作表中记录行数

获取工作表中记录的条数(注意工作表中不能有缺失的行),本质就是获取工作表中最后一行单元格的行编号。而获取单元格行编号在本文上半幅已经介绍过,但是如何找到工作表中最后一个单元格呢?这就需要使用到单元格的End属性。

End属性

End属性返回当前区域结尾处的单元格,等同于在源单元格按<End + 方向键(上、下、左、右)>得到的单元格。

其实,使用End属性来获取连续单元格区域的边界的频率非常高,一般情况下使用鼠标在单元格边框双击即可,如转到右边框,直接在单元格右边框待鼠标变成由四个箭头组成的十字形时,注意与四条直线组成的十字形相区分,负责就变成填充了,双击即可得到。

# 获取N12所处单元格区域的左边界单元格的行列编号
Range("N12").End(xlToLeft).Row
Range("N12").End(xlToLeft).Column

# 获取N12所处单元格区域的右边界单元格的行列编号
Range("N12").End(xlToRight).Row
Range("N12").End(xlToRight).Column

# 获取N12所处单元格区域的上边界单元格的行列编号
Range("N12").End(xlUp).Row
Range("N12").End(xlUp).Column

# 获取N12所处单元格区域的下边界单元格的行列编号
Range("N12").End(xlDown).Row
Range("N12").End(xlDown).Column

End属性的具体参数如下所示。

序号 参数 说明
1 xlToLeft 向左移动,等同于在源单元格 < Ctrl + ←>
2 xlToRight 向右移动,等同于在源单元格 < Ctrl + → >
3 xlUp 向上移动,等同于在源单元格 < Ctrl + ↑ >
4 xlDown 向下移动,等同于在源单元格 < Ctrl + ↓ >

Count属性

Count属性记录当前单元格区域所包含单元格数量。

Range("a1:b5").Count '返回A1:B5单元格区域所包含单元格数量 -> 10
[A1:B5].Count

前面提到过单个单元格可以使用Cell表示,那么当前工作表所包含的所有单元格能否使用Cell表示呢?能否获取当前工作表所包含的所有行呢?能否获取当前工作表所包含的所有列呢?答案是肯定的。

Cells表示当前活动工作表中所有的单元格,那么获取当前单元格所有行的表示为Cells.Rows,获取当前单元格所有列的表示为Cells.Columns,那么获取当前工作表最后一行单元格的行号的表示为Cells.Rows.Count,那么获取当前工作表最后一行单元格的列号的表示为Cells.Columns.Count

注意:

*.xls格式的工作表最大单元格行数为 65536,*.xlsx格式的工作表最大单元格行数为1048576。

为什么要获取到到工作表中所包含的所有单元格区域呢?

因为现有的数据都是在不覆盖原有数据的情况下,在原有数据后面追加数据的,因此只有得到所有的数据才能知道数据最后一条数据在哪里,从而指导从哪一行开始追加数据,因此获取当前工作表最后一行数据的表示为,

Range("A" & Range("A"& Cells.Rows.Count).End(xlUp).Row + 1).Select

其中Cells.Rows.Count得到整个工作表所能容纳的最大数据行数,即*.xls格式的工作表最大单元格行数为 65536,*.xlsx格式的工作表最大单元格行数为1048576;

Range("A"& Cells.Rows.Count)获取整个工作表所能容纳的最大数据行数的第一列单元格,即Range("A65536")Range("A1048576")

Range("A"& Cells.Rows.Count).End(xlUp)获得该工作表内最后一条数据;

Range("A"& Cells.Rows.Count).End(xlUp).Row获得该工作表内最后一条数据所在的行;

Range("A" & Range("A"& Cells.Rows.Count).End(xlUp).Row + 1).Select选择最后一条数据向下间隔一个单元的A列单元格。

Range("A" & Range("A"& Cells.Rows.Count).End(xlUp).Row + 1).Select ' 选择A29单元格

Range("B" & Range("B"& Cells.Rows.Count).End(xlUp).Row + 1).Select ' 选择B28单元格

Range("B" & Range("B1").End(xlDown).Row + 1).Select ' 选择B9单元格

注:

从上面的例子可知,End属性是以某一个既定单元格开始从上、下、左、右方向寻找单元格区域的边界,而改边界是以空单元格来划分的。

分类:

后端

标签:

数据库

作者介绍

wxiaow
V1

把学的写出来,是方法,也是一种态度。