教你一个新用法,OFFSET函数2个参数就可以多表引用( 二 )


文章图片


你可能觉得卢子有点画蛇添足 , 直接Range("b3:d3").Select
不就完事 。

其实如果只是引用一个区域这样写也行 , 不过如果是要通过变量i依次引用2、3、4行的区域 , 这种写法不方便操作 。

用OFFSET更容易处理这种 , 现在要让这几行的区域分别等于某内容可以用这样的代码 。
教你一个新用法,OFFSET函数2个参数就可以多表引用
文章图片


某内容 , 其实就是每个工作表的d2:d4 。
教你一个新用法,OFFSET函数2个参数就可以多表引用
文章图片


好 , 将这个思路转换成代码 。
教你一个新用法,OFFSET函数2个参数就可以多表引用
文章图片


现在问题来了 , 等于(=)前面是横向的3个单元格 , 等于(=)后面是纵向的3个单元格
, 形状不一样 。

也就是说 , 需要再进行一步处理 , 选择性粘贴→转置 。 关于这个 , 昨天已经通过录制宏实现 , 现在就不再重复 。

其实 , Excel内置的函数就有Transpose函数 , 也就是转置 。

这里教你一个快速调用内置函数的方法 , 这样你就不需要记住完整的函数 。 那么长的函数 , 卢子也记不住 , 能记住前面2个字母就行 。

在空白的区域 , 输入wo , 按Ctrl+j , 这时就出现一个提示对话框 , 跟平常输入函数差不多 。 WorksheetFunction.Transpose
相当于调用工作表函数里面的Transpose

教你一个新用法,OFFSET函数2个参数就可以多表引用
文章图片


再将代码修改完整 , 搞定 。

Sub 测试()
Dim i As Integer
For i = 2 To Sheets.Count
Range("b2:d2").Offset(i - 2, 0) = WorksheetFunction.Transpose(Sheets(i).Range("d2:d4"))
Next
End Sub

再通过一个实例来说明OFFSET函数 。

要将带颜色的列的总计数引用到汇总 , 带颜色的单元格都是相差3列 。
教你一个新用法,OFFSET函数2个参数就可以多表引用
文章图片


汇总的效果 , A列为工作表名称 , 后面6列为要引用的内容 。
教你一个新用法,OFFSET函数2个参数就可以多表引用
文章图片


汇总表的第2行 , 也就是Range("a2")依次向右1列、2列……6列 , Range("a2").Offset(0, i)


分表的第36行 , 也就是Sheets(2).Range("a36")依次向右3列、6列……18列 , Sheets(2).Range("a36").Offset(0, i * 3)


这样汇总表的第2行代码就出来了 。
教你一个新用法,OFFSET函数2个参数就可以多表引用


推荐阅读