打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Excel居然会自动写公式、写VBA代码,再也不用傻傻的去记了,真爽!
有粉丝留言,让卢子聊一下使用ChatGPT的体验,发布一些教程,让没接触过的人更好的认识AI。

如果第一次使用AI,可以先看文章:亲测有效!免费使用ChatGPT,最简单的方法

AI很聪明,学习能力很强,现在的回答比半年前更胜一筹,新版本的函数都会用。下面,卢子举6个案例说明。

1.删除重复值

问题:工作表的A列有很多行内容,里面有的内容输入2次以上,怎么删除重复值?

AI提供了高级筛选和删除重复项两种方法。


这里,卢子演示删除重复项。


2.提取重复值(公式法)

问题:工作表的A列有很多行内容,里面有的内容输入2次以上,怎么用公式提取不重复的值到B列?

AI居然提供了高版本才有的去重复函数UNIQUE,刚看到挺惊讶的。

=UNIQUE(A1:A13)


3.统计不重复个数(公式法)

问题:工作表的A列有很多行内容,里面有的内容输入2次以上,怎么用公式统计不重复值的个数?

AI半年前提供的公式,超级复杂。


AI现在提供的公式,很简洁,有点小缺陷,COUNTAA漏写了。COUNT是统计数字个数,COUNTA是统计非空个数,一定要用后者。


=COUNTA(UNIQUE(A2:A13))


除了技巧、函数,卢子还测试了VBA,一定要将问题说明的很详细,才能得到正确的代码。

4.生成1月-12月的工作表

问题:第一个工作表名称为目录,里面的A列罗列1月-12月,希望用VBA新建12个工作表,名称为1月、2月……12月?

AI提供的代码:
Sub CreateMonthlySheets()    Dim directorySheet As Worksheet    Dim newSheet As Worksheet    Dim monthRange As Range    Dim monthCell As Range    Dim month As String    Dim i As Integer
'指定目录工作表 Set directorySheet = ThisWorkbook.Sheets("目录")
'获取月份列表的范围 Set monthRange = directorySheet.Range("A2:A13")
'遍历月份列表,并创建对应的工作表 For Each monthCell In monthRange month = monthCell.Value i = i + 1
'创建新工作表,并命名为对应的月份 Set newSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) newSheet.Name = i & "月" Next monthCell
MsgBox "已根据目录工作表创建了12个工作表,每个工作表的名称为1月到12月!", vbInformationEnd Sub


点开发工具,VB,插入模板,将代码粘贴进去。


运行代码,就生成1月-12月共12个工作表。



5.生成N个名称没有规律的工作表

问题:第一个工作表名称为目录,里面的A列罗列张三、李四、王五等很多行内容,希望用VBA新建N个工作表,名称为张三、李四、王五等

AI提供的代码:
Sub CreateSheetsFromList()    Dim directorySheet As Worksheet    Dim nameRange As Range    Dim nameCell As Range    Dim name As String
'指定目录工作表 Set directorySheet = ThisWorkbook.Sheets("目录")
'获取姓名列表的范围 Set nameRange = directorySheet.Range("A2:A" & directorySheet.Cells(Rows.Count, 1).End(xlUp).Row)
'遍历姓名列表,并创建对应的工作表 For Each nameCell In nameRange name = nameCell.Value
'创建新工作表,并命名为对应的姓名 ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = name Next nameCell
MsgBox "已根据目录工作表创建了" & nameRange.Rows.Count & "个工作表,每个工作表的名称为列表中的姓名!", vbInformationEnd Sub

运行效果。


6.制作目录

问题:同一个工作簿里面有多个工作表,怎么用VBA代码,提取工作表名称做目录放在新工作表的A列?

AI提供的代码:
Sub ExtractSheetNames()    Dim ws As Worksheet    Dim newNameSheet As Worksheet
'创建一个名为"SheetNames"的新工作表 Set newNameSheet = ThisWorkbook.Sheets.Add(After:= _ ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) newNameSheet.Name = "SheetNames"
'在新工作表A列中写入工作表名称 For Each ws In ThisWorkbook.Worksheets newNameSheet.Cells(newNameSheet.Cells(Rows.Count, 1).End(xlUp).Row + 1, 1).Value = ws.Name Next ws
MsgBox "工作表名称已提取至SheetNames工作表的A列!", vbInformationEnd Sub

运行效果。

最后,总结一下经验,跟AI聊天目前不支持发表格、图片,因此描述问题一定要很详细,太笼统的问题很容易得到错误的答案。

笼统的问题:如何用VBA代码,提取工作表名称做目录?

详细的问题:同一个工作簿里面有多个工作表,怎么用VBA代码,提取工作表名称做目录放在新工作表的A列?

记住,问题表达的越详细越好。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Excel | VBA(2)——生成工作表目录
常用VBA小代码:一键对工作表排序
VBA常用小代码004:对工作表按名称快速排序
用VBA制作包含超链接的工作表目录
VBA统计一个EXCEL工作薄内多张工作表内最大行数的方法
EXCEL中快速设置工作表目录和分表间超链接
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服