教你一个新用法,OFFSET函数2个参数就可以多表引用( 二 )
文章图片
你可能觉得卢子有点画蛇添足 , 直接Range("b3:d3").Select
不就完事 。
其实如果只是引用一个区域这样写也行 , 不过如果是要通过变量i依次引用2、3、4行的区域 , 这种写法不方便操作 。
用OFFSET更容易处理这种 , 现在要让这几行的区域分别等于某内容可以用这样的代码 。
文章图片
某内容 , 其实就是每个工作表的d2:d4 。
文章图片
好 , 将这个思路转换成代码 。
文章图片
现在问题来了 , 等于(=)前面是横向的3个单元格 , 等于(=)后面是纵向的3个单元格
, 形状不一样 。
也就是说 , 需要再进行一步处理 , 选择性粘贴→转置 。 关于这个 , 昨天已经通过录制宏实现 , 现在就不再重复 。
其实 , Excel内置的函数就有Transpose函数 , 也就是转置 。
这里教你一个快速调用内置函数的方法 , 这样你就不需要记住完整的函数 。 那么长的函数 , 卢子也记不住 , 能记住前面2个字母就行 。
在空白的区域 , 输入wo , 按Ctrl+j , 这时就出现一个提示对话框 , 跟平常输入函数差不多 。 WorksheetFunction.Transpose
相当于调用工作表函数里面的Transpose
。
文章图片
再将代码修改完整 , 搞定 。
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列 。
文章图片
汇总的效果 , A列为工作表名称 , 后面6列为要引用的内容 。
文章图片
汇总表的第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行代码就出来了 。
推荐阅读
- 酒业|换届!保护知识产权 “护航”中国酒业再出发
- 川菁食品|自热小火锅的崛起,如何在“拥挤”的市场环境下脱颖而出
- 漫说健康|赖宝突发心梗去世:猝死前这4个“求救信号”,收到一个能保命
- 如今|女子因一个电话爱上了杀人犯,如今还和对方在监狱里举行婚礼
- 宠物圈|这群野山羊“占领”了英国的一个小镇,因此全世界闻名
- 生命|每一个生命打算离开时都发出过求救信号
- 法制|男子当街抢劫,漯河民警一个“反手折臂”
- 搜搜网官方|皮蛋你喜欢哪种吃法?教你做高颜值的皮蛋美食,你一定意想不到!
- 青豆妈美食|教你做特色美食萝卜肉圆,一个城市的记忆,大小菜馆必备的一道菜
- 玩家|《青春有你3》玩家曝光都是熟悉的面孔,以团之名来自一个团队?
