百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

【VBA入门必备】Offset和Resize这样用,工作效率翻3倍!

zhezhongyun 2025-07-20 00:00 27 浏览

大家好!今天共同学习下VBA中单元格属性Offset和Resize操作。


一、Offset:单元格的"导航仪"

功能说明:以当前单元格为坐标原点,灵活跳转位置
语法格式:单元格.Offset(行数,列数)
实际场景:批量处理动态数据时,无需手动数格子!

经典用法

' 从A1出发向下跳2行,向右跳1列 → 到达B3
Range("A1").Offset(2, 1).Select

' 动态遍历数据表(假设数据从A2开始)
For i = 1 To 10
    Cells(2, 1).Offset(i-1, 0).Value = "第" & i & "条"
Next i

避坑指南

  • 正数向下/向右移动,负数向上/向左移动
  • Offset(0,0)就是原地不动
  • 移动超出边界会报错(如从A1.Offset(-1,0))

二、Resize:区域变形的"橡皮擦"

功能说明:调整选区范围大小
语法格式:单元格.Resize(新行数,新列数)
实际场景:批量复制不规则数据区域时超好用!

经典用法

' 把A1扩展成3行2列的选区 → A1:B3
Range("A1").Resize(3, 2).Select

' 动态获取数据区域(假设A列有不定长数据)
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1").Resize(lastRow).Copy Destination:=Sheet2.Range("A1")

避坑指南

  • 不写参数时保持原维度(如.Resize(,3)只改列数)
  • 可用Rows/Columns属性快速调整单维度
Range("A1").Resize(5)        ' 5行1列
Range("A1").Resize(,3)       ' 1行3列

三、组合技:Offset+Resize=动态选区神器

场景实战:批量标记隔行数据

Sub 隔行染色()
    For i = 1 To 10 Step 2
        ' 从A1开始,每次下移i-1行,选中1行3列
        Range("A1").Offset(i-1, 0).Resize(1, 3).Interior.Color = RGB(200, 200, 200)
    Next i
End Sub

效果说明:自动将A1:C10 区域每隔一行填充灰色背景


四、头条专属福利:超实用代码模板

场景1:动态创建汇总表

Sub 智能汇总()
    Set sourceRng = Range("A1").CurrentRegion ' 获取原始数据区
    Set newRng = sourceRng.Offset(sourceRng.Rows.Count + 2).Resize(1) ' 下移N行创建新区
    newRng.Formula = "=SUM(" & sourceRng.Address & ")" ' 自动添加汇总公式
End Sub

场景2:自动生成数据透视模板

Sub 一键透视()
    Set dataRng = Range("A1").CurrentRegion
    Set pivotLoc = dataRng.Offset(0, dataRng.Columns.Count + 2) ' 右侧空2列创建透视
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
        SourceData:=dataRng).CreatePivotTable TableDestination:=pivotLoc.Cells(1,1)
End Sub

相关推荐

Opinion丨Struggle Against U.S. Mind colonization in the Global South

Editor'snote:Thismonth,XinhuaNewsAgency'sThinkTankreleasedareporttitled"Colonizationof...

爱可可AI论文推介(2020.11.4)_爱可可女装旗舰店

LG-机器学习CV-计算机视觉CL-计算与语言AS-音频与语音RO-机器人(*表示值得重点关注)1、[LG]*CombiningLabelPropagationan...

何新:罗马伪史考英文版序言_罗马史学

2019-10-2514:48:27何新:罗马伪史考序言(英文译本)HeXin:PreambleofResearchonPseudo-historyofRome1Afewyear...

XPeng Stock Rises Over 4% after Q2 Revenue and EV Margin Set Records

TMTPOST--TheAmericandepositaryreceipts(ADRs)ofXPengInc.rosearound4.2%onTuesdayaftert...

英汉世界语部首(八)_英文部首字典

本节讲八个部首,分别是:弓gōng【ECWLrad】bow廾gǒng【ECWLrad】twen广guǎng【ECWLrad】vast己jǐ【ECWLrad】self已yǐ...

一课译词:划水_划水是什么地方的方言

[Photo/SIPA]懒惰是人类的天性,因此才总有人会在工作时“划水”。“划水【huáshuǐ】”,本意是指“用胳膊划的动作(makestrokeswithone’sarms)”,延伸为“...

首测!GPT-4o做Code Review可行吗?

编辑|言征出品|51CTO技术栈(微信号:blog51cto)近日,OpenAI一记重拳,推出了GPT-4o(“o”表示“omni”),将语音识别和对话方面的优势展示的淋漓尽致。几乎可以肯定,...

C++|漫谈STL细节及内部原理_c++ stl详解

1988年,AlexanderStepanov开始进入惠普的PaloAlto实验室工作,在随后的4年中,他从事的是有关磁盘驱动器方面的工作。直到1992年,由于参加并主持了实验室主任BillWo...

C++ inline关键字深度解析:不止于优化的头文件定义许可

在C++开发中,几乎每个程序员都用过inline关键字,但多数人只停留在“内联优化”的表层理解。事实上,inline的真正威力在于它打破了C++的单一定义规则(ODR)限制,成为头文件中安全定义函数的...

实用 | 10分钟教你搭建一个嵌入式web服务器

之前分享的文章中提到了几种可以在嵌入式中使用的web服务器。嵌入式web服务器就是把web服务器移植到嵌入式系统的服务器。它仍然是基于http文本协议进行通信的,具有标准的接口形式,对客户端...

中间语言格式_中间格式文本是什么

在通常情况下,编译器会将目标语言转换成某种中间语言格式,而不是直接将源代码转换成二进制机器指令,不少c语言编译器,都会将代码编译成汇编语言,然后再通过汇编语言编译器将汇编代码转换成目标机器可执行的二进...

一线开发大牛带你深度解析探讨模板解释器,解释器的生成

解释器生成解释器的机器代码片段都是在TemplateInterpreterGenerator::generate_all()中生成的,下面将分小节详细展示该函数的具体细节,以及解释器某个组件的机器代码...

干货,Web开发和前端开发逆天工具大全

微信ID:WEB_wysj(点击关注)◎◎◎◎◎◎◎◎◎一┳═┻︻▄(点击页底“阅读原文”前往下载)●●●逆天工具CDN资源库国内Bootstrap中文网开源项目免费CDN服务36...

移动端rem+vw适配_移动端web页面适配方案

rem:rem是相对单位,设置根元素html的font-size,比如给html设置字体大小为100px,1rem=100px;rem缺点:1.和根元素font-size值强耦合,系统字...

从零搭建 React 开发 H5 模板_react html5

项目创建创建项目文件夹mkdir react-democd react-demonpm init -y依赖安装yarn add rea...