首页
学习
活动
专区
工具
TVP
发布

就任性!一键批量更改工作表名称

您问我为啥突然问这话,那段小代码对我们今天的问题有所帮助。

我们今天分享的内容是——如何一键批量修改工作表名称。

照例举个例子,如下图的A列所示,工作表名是一些可爱家伙。

现在,我们想把工作表名称,根据E:F列的匹配信息,修改为如下形式,部门-人名:

(栗子里表名修改的规则,就是依照E:F的信息,在每个人名前增加部门的前缀)

我们可以先把该工作簿现有工作表的名称提取出来,放置在表格的A列。如此一来,我们就可以很方便的利用函数公式,比如IF、VLOOKUP函数等,根据E:F列的内容,对表名做针对性的修改。

看我小眼神,这就用到了我们之前说的VBA常用小代码系列001,一键生成工作表目录不是?

利用该段小代码,一键我们就可以把表名提取到A列了。

当然,那期的代码是批量提取工作表名称并建立超链接,我们这里不需要建立超链接,代码可以简化如下:

Sub ml()

Dim sht As Worksheet, k&

[a:a].ClearContents'清空A列内容

[a:a].NumberFormat = "@"

'设置文本格式,防止文本数值数据变形

[a1] = "目录"

k = 1

For Each sht In Worksheets

'遍历工作簿中每个工作表

k = k + 1

'累加K值

Cells(k, 1) = sht.Name

'将工作表名称依次放入表格A列

Next

End Sub

第二步,我们把新的工作表名称用函数计算出来,放在表格的B列。

该例中的E:F列提供了每个人员的部门参数,我们可以在B2输入公式,并向下复制填充:

=IFERROR(VLOOKUP(A2,E:F,2,)&"-"&A2,A2)

最后,就是一键更名了。

代码也不长,如下:

Sub Rename()

Dim shtname$, sht As Worksheet, i&

On Error Resume Next

'当程序运行中出现错误时,继续运行

For i = 2 To Cells(Rows.Count, 1).End(3).Row

'遍历当前表格A列的数据

shtname = Cells(i, 1).Value

'将表格A列的值,赋予变量shtname

'之所以将shtname的变量类型定义为文本,是防止A列数据为数值时和sheet序列引用产生冲突。

Worksheets(shtname).Name = Cells(i, 2).Value

Next

End Sub

看下动画效果:

是不是很有趣小炫酷?

当然,我们也可以把两段代码合并成一段代码,也就是省略把工作表名称提取到A列后再用函数更名的步骤,直接通过VBA编程进行更名,但为了方便大家容易理解和更加灵活的使用这段小代码,这里选择了两步走的方案。

拥抱,再见。

Excel VBA编程与实践

易学宝微视频教程,1290个Office技巧精粹,每个技巧都与实际工作密切相关。轻松学习技巧,练就职场达人,淘宝搜索关键字:ExcelHome易学宝

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180129B02S6200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券