excelvbatutorialExcel是最常用的电子表格管理软件。VBA,或应用程序的Visual Basic,更进一步,使您可以很容易地自动化Excel中的任何东西(请参阅本教程为快速进入VBA)。在今天的教程中,我们将向你展示如何使用VBA中的偏移函数,来选择一个单元格或一个单元格范围。你需要对Excel和VBA都有基本的熟悉。

如果你是新手,没问题,你可以尝试我们的课程VBA与Excel

什么是偏移函数

OffSet()返回单元格的值,该值是您指定的偏移量。这个函数的语法如下:

偏移量(单元格参考,行,列,高度,宽度)

下面是每个参数的含义

  1. 单元格引用:指单个单元格或单元格范围。
  2. 行:指定离开给定单元格的行数。如果输入的值是负数,则给定的单元格向左移动。
  3. 列:指定远离给定单元格的列数。如果value为负,单元格向上移动。

注意,高度和宽度是可选的。它们用于在单元格中指定返回范围的高度和宽度。可以在工作表的任何单元格中插入OffSet()公式,显然,需要偏移的单元格除外。

结合Range()和OffSet()

OffSet属性通常与Range属性一起使用,以指定新的位置。让我们看一下这个例子

范围(B1)。抵消(RowOffSet: = 1, ColumnOffset: = 1)。选择

此代码将选择C2。参数RowOffSet用于从单元格B1移动1行。类似地,参数ColumnOffSet用于从单元格B1移动1列。注意,参数之间必须用逗号分隔。

实现相同结果的一种更简单的方法是使用一种简写方法,如下所示

范围(" A1 ")。(1, 1) .Select抵消。

这里我们只指定了行和列偏移量的数字。VBA将在内部“知道”第一个是行偏移量,而第二个是列偏移量。如果您想更多地研究Range()函数,可以这样做看看我们关于VBA宏的课程。现在,让我们来看更多的例子。

如何指定仅行

可以只指定行而不指定列。你可以这样做。

范围(B1) .Offset (1) .Select

这里我们省略了列参数和它的逗号。这段代码只导致从原始单元格位置向下移动1行。它将选择整个行,而不仅仅是单个单元格。

如何指定仅列

类似地,也可以只指定列而省略行。代码如下所示:

范围(B1)。抵消(,1)。选择

在Excel中,逗号是必需的,以知道只设置了列偏移量。

如何指定负偏移量

你能猜到怎么做吗?这是很简单。这是代码

范围(D2)。抵消(1,1)。选择

这使得选择从起始位置向上移动1行1列。从细胞D2到细胞C1。

如何抵消一系列的细胞

也可以为范围指定多个单元格。假设您想选择或获取单元格范围的偏移量

范围(“B1: D4”)。(1, 1) .Select抵消

这里,我们从B1到D4的细胞范围开始。目标是将这个完整的单元格范围偏移1行和1列。新的单元格范围将从C2到E5。

结合活动单元与偏移量

活动单元格引用当前选定的单元格。让我们来看看几个涉及活性细胞的例子。下面是从当前选定的单元格中向下移动一个单元格的代码

ActiveCell.Offset .Select (1,0)

使用Range()和Offset()组合活动单元

下面的代码除了选择右边的四个单元格外,还选择了一个单元格,这些单元格将被复制/粘贴到另一个位置。

范围(ActiveCell ActiveCell.Offset (0, 4) .Copy

注意,在第一个ActiveCell实例之后有一个逗号,在副本之前有一个双闭括号。现在让我们继续讨论使用偏移功能来获得所需结果的简单程序。

示例1:计算Excel工作表中的行数

Sub CountNumRows() Dim Count1 as Long Count1 = 0 Do Count1 = Count1 + 1 ActiveCell。Offset(1,0). select循环直到IsEmpty(ActiveCell。MsgBox "There are" Count1 "Rows" End Sub

在这个程序中,我们将Count1声明为long类型的变量。Count加1。然后使用OffSet()循环这些行。当遇到空行时,循环终止。变量count1包含总行数。msgbox()显示一个带有总行数的弹出框。

示例2:结合Range和OffSet来填充从1到100的偶数单元格范围。

Sub prog1() Dim Num Num = 0 For Row = 0 To 9 For Col = 0 To 9 Range(" A1 ")。抵消(行,坳)。Value = Num Num = Num + 2 Next Col下一行结束子行

在这个程序中,A1是给定的单元格,合成的范围是从A1到J10。变量Num初始化为0,并在每次循环中递增值2。由此产生的单元格范围包括从1到100的每一个不重复的偶数。

希望您发现偏移函数有用,现在可以在自己的程序中使用它。我们只谈到了冰山的一角。还有很多。你可以查看更多细节这个终极VBA课程如果你愿意的话现在切换到高级宏,我们刚刚找到Excel先生!

Excel VBA顶级课程

解锁Excel VBA和Excel宏
莱拉Gharani
4.7 (26282)
畅销书
完成Web自动化与Excel VBA
丹尼尔强
4.6 (728)
畅销书
精通Microsoft Excel宏和Excel VBA
凯尔尤
4.5 (11331)
畅销书
最终Excel VBA
马克Talbert
4.6 (3163)
Excel VBA编程-完整的指南
鲍里斯Paskhaver
4.6 (3696)
Microsoft Excel VBA简介
凯尔尤
4.5 (1145)
Excel VBA宏:高度消除歧义的Excel VBA编程
格兰特赌博
4.6 (964)
畅销书
Excel宏和Excel VBA编程初学者
Andreas Exadaktylos
4.6 (833)
评价最高
Excel VBA练习和实际项目
凯伦Tateosyan
4.5 (215)

更多Excel VBA课程

Excel VBA的学生也学习

让你的团队。领导行业。

通过Udemy for Business为您的组织订阅在线课程图书馆和数字学习工具。

请求一个演示