本文主要记录一些在工作中经常能用到的excel技巧,能够帮助我们提高工作效率。在文章的最后还会通过几个实战例子来加深大家的理解。建议把本文作为备查文,不需要在阅读本文的当下就将这些技巧掌握,只需了解,哪些东西通过excel是能够做到的,再实际工作中遇到问题的时候再来查阅。
【不要被vba吓到,配合chatgpt,每一个没有学过代码的人都能够搞定80%的vba编写宏的需求!】
目录
编辑
1 高级功能篇
1.1 格式设置/格式刷
1.2 填充
1.3 数据透视表
1.4 画图(迷你图)
1.5 批注与数据验证
1.6 分列、去重
1.7 冻结窗口
1.8 从网页获取数据
Excel的从网页获取数据功能的应用场景
2 公式函数篇
2.1 查找函数
2.2 条件函数
2.3 字符串函数
2.4 日期与时间函数
2.5 逻辑函数
2.6 数组常量及运算
2.7 常用数组函数
3 vba篇
3.1 录制宏
3.2 利用chatgpt改造录制的宏
3.3 按钮/窗体
3.4 自定义函数
1 高级功能篇
1.1 格式设置/格式刷
在excel中的格式设置主要包含数字的格式设置和单元格的格式设置。
在这里对格式刷功能进行重点介绍,因为这个在工作中可能会用得很多:
1、单击格式刷
选中已有格式的单元格,单击格式刷,再选中需要设置格式的单元格,就可以完成格式的复制了,这是最基础的用法。
2、双击格式刷
选中已有格式的单元格,双击格式刷,再分别单击需要复制格式的单元格,最后需要取消时,再次单击格式刷,即可结束格式刷被激活的状态。
3、单击+快捷键
选中已有格式的单元格,单击格式刷,然后按快捷键Ctrl+Shift+↓,瞬间完成批量格式刷。
隔行填充颜色用这个方法超好使,具体操作见文末视频
4、双击+查找
选中已有格式的单元格,双击格式刷,然后按Ctrl+F快捷键打开查找和替换窗口,查找内容为“肉”,点击查找全部,再按快捷键Ctrl+A全选包含“肉”的单元格,此时表中全部包含“肉”的单元格格式就设置好了。
4
5、双击+回车键
选中已有格式的单元格,双击格式刷,然后用鼠标单击空白区域,再按下Enter键,就把刚刚选中的格式和文字都复制过来了。
1.2 填充
1、Excel填充技巧:按住Ctrl键快速填充序列。
方法:
- 在起始目标单元格中输入开始值。
- 按住Ctrl键,移动光标至填充柄位置,待光标变成上下两个十字箭头时,拖动到目标单元格的最后一个单元格即可。
解读:
序列的其实值可以是任意值,不一定从1开始填充。
2、Excel填充技巧:快速填充指定范围内的序列。
方法:
- 在第一个目标单元格中输入序列的起始值,如21,之后选中。
- 单击【开始】菜单,【编辑】组中的【填充】-【序列】,打开【序列】对话框。
- 选择【序列产生在】中的【列】,并在右下角【终止值】文本框中输入序列的最大值。
- 单击【确定】。
解读:
- 序列的其实值根据实际情况自定义。
- 序列可以在【行】中产生,也可以在【列】中产生。
- 也可以根据实际需要设置【步长值】,默认情况下【步长值】为1,如果下一个序列值比当前序列值大X,则【步长值】为X。
3、Excel填充技巧:按月份填充日期。
方法:
- 在起始目标单元格中输入起始日期。
- 拖动第一个目标单元格的填充柄值最后一个目标单元格。
- 单击【自动填充选项】-【以月份填充】。
4、Excel填充技巧:按年份填充日期。
方法:
- 在起始目标单元格中输入起始日期。
- 拖动第一个目标单元格的填充柄值最后一个目标单元格。
- 单击【自动填充选项】-【以年填充】。
5、Excel填充技巧:快速填充指定范围内的日期。
方法:
- 在第一个目标单元格中输入序列的起始值,如“2022年3月22日”,之后选中。
- 单击【开始】菜单,【编辑】组中的【填充】-【序列】,打开【序列】对话框。
- 选择【序列产生在】中的【列】,并在右下角【终止值】文本框中输入序列的最大值,如“2022年3月31日”。
- 单击【确定】。
6、Excel填充技巧:填充工作日。
方法:
- 在起始目标单元格中输入起始日期。
- 拖动第一个目标单元格的填充柄值最后一个目标单元格。
- 单击【自动填充选项】-【填充工作日】。
7、Excel填充技巧:按字母填充。
方法:
- 在目标单元格中输入公式:=SUBSTITUTE(ADDRESS(1,ROW(A1),4),1,)。
- 拖动第一个目标单元格的填充柄,向下填充。
8、Excel填充技巧:不间断序列。
方法:
- 在第一个目标单元格中输入公式:=ROW()-2或=MAX(H$2:H2)+1。
- 拖动第一个目标单元格的填充柄,向下填充。
解读:
公式中的“-2”或“+1”均为修正值,在应用中必须根据实际情况进行调整。
9、Excel填充技巧:筛选填充序列。
方法:
- 在第一个目标单元格中输入公式:=SUBTOTAL(3,G$3:G3)。
- 拖动第一个目标单元格的填充柄,向下填充。
1.3 数据透视表
这里有一份各个基金的费率、份额、类型、投资类型和管理公司的数据表,我想对数据进行汇总观察,比如我有以下几种需求:
- 统计各家基金管理公司的不同投资类型的基金有多少只;
- 统计各家基金管理公司不同投资类型的基金的管理费率的平均值、最大值、最小值;
- 统计各家基金管理公司不同投资类型的基金有多少只(附带筛选条件:基金托管人必须是国有四大行)。
这些有数据聚合统计相关的需求都可以用数据透视表来实现。
首先,我们先调出数据透视表
1、统计各家基金管理公司的不同投资类型的基金有多少只
2、统计各家基金管理公司不同投资类型的基金的管理费率的平均值、最大值、最小值
3、统计各家基金管理公司不同投资类型的基金有多少只(附带筛选条件:基金托管人必须是国有四大行)
1.4 画图(迷你图)
上图最右侧就是迷你图,迷你图是创建在工作表单元格中的一个微型图表,没有坐标轴、标题、图例、数据标志、网格线等图表元素,主要用于反映一系列数据的变化趋势,或者突出显示数据中的最大值和最小值。
可以批量生成迷你图。
1.5 批注与数据验证
其实这两种功能有点像,个人理解数据验证如果加上提醒就是批注+验证。
1、批注
选中要添加批注的单元格,点击鼠标右键,打开右键菜单,选择插入批注,在小方框中输入要添加的注释即可。
批量设置批注:
在单元格内插入批注,复制该单元格,按Ctrl,选择好所有需要添加该批注的单元格,在需要添加的任意单元格,右键,选择性粘贴,点击批注即可。
PS:当然,如果你仅选中一个单元格,那也是可以一个一个复制的。
2、数据验证
1.6 分列、去重
1、分列
第一步:选择适合数据的分列方式,一共有2种分列方式
1)分隔符号:如果分列的数据中特殊的符号,一般选择使用分隔符号,比如逗号,冒号等以及现在例子中都有的“省”字都是可以作为分隔符号
2)固定宽度:如果想要分列的数据有固定宽度( 比如从身份证提取身份证的省编码,出生年月),或者数据想要的数据部分是固定宽度,(比如例子中要省份,并且都是省都是2位的)选择使用固定宽度。
并不是我们分列方式只能选择一种,有时候数据满足这2种分列方式,我们选择最合适的即可。
第二步:根据第2步选择的分列方式,来到第二步来指定分列的规则。
如果选择的是分隔符号,第二步是需要选择合适的分隔符号,如果前面几个特殊的符号(Tab键、分号、逗号、空格)不满足,可以在其他里输入。
连续分隔符号视为单个处理:文本中有多个连在一起的分隔符号,就把它只当作一个使用。(避免了出现很多空列)
文本识别符号:在这个符号内引住的文本,不参加分列。
下方是有数据预览效果,可以看一下是否是自己想要的分列效果。
如果选择的是固定宽度,第二步是需要建立合适的分割线
(分割线的使用,大家看绿色框里即可)
第三步:是我们去设置各列的数据格式以及列是否导出和导出位置
1)各列的数据格式
下面数据预览点击那列,选择那列的数据格式,我们经常通过第三步,去进行数值型和文本型的数字转换(数字和文本的转换),不规则日期的格式转换为规则的日期格式。
2)列是否导出
下面数据预览点击那列,选择不导入此列跳过,这列就不会到导出
3)导出位置
目标区域:选择位置即可(如果不选择默认在原来的位置分列好的数据,但是需要注意的是,如果分列后需要导出多列,而后面列有数据,会将后面的数据替换掉,解决方法:需要提前插入空列)
但其实,分列功能并不是仅仅用来分列的,有的时候他是很好用的数字格式转换的工具,例如:
1)数值型和文本型数字的转换
数据是文本,是无法进行计算的,并且我们在筛选的时候也是不能按照数字筛选走
我们需要将文本转为数字,直接跳过分列前2步,直接来到最后一步,列数据格式选择常规
有时候我们也需要将数字转为文本,比如如果数字超过11位,就会以科学计数法记录,我们需要将其值展示出来,又比如身份证必须用文本,否则后面3位会丢失,变成0
2)不规范的日期变成规范的日期
在Excel正确的日期格式是2022/9/5,或者2022-9-5,其他的比如20220905、2022.9.5都是不规范的日期格式,不能进行日期计算。
直接跳过分列前2步,直接来到最后一步,列数据格式选中日期,YMD是说我们的数据是按照YMD格式记录的,也可以自己去选择。
2、去重
1.7 冻结窗口
冻结窗格有三种,冻结首行,冻结首列,当你想要自定义冻结的行数和列数是,就选中第一个不需要冻结的单元格,单后点击“冻结窗格”。
1.8 从网页获取数据
这是一个很多人都没有用过的但是其实非常实用的功能。
Excel的从网页获取数据功能是一种强大的工具,允许用户从网页上抓取数据并将其导入到Excel工作表中。这个功能的好处是可以自动化数据抓取过程,避免手动复制粘贴,从而节省时间和减少错误。
使用Excel的从网页获取数据功能非常简单,基本步骤:
-
打开Excel并创建一个新工作表或打开一个现有的工作表。
-
转到“数据”选项卡,然后选择“从网页”选项。
-
在弹出的对话框中,输入您要抓取数据的网页地址(URL)。Excel会自动访问该网页并加载数据。
-
在加载网页后,您将看到一个网页浏览器窗口,其中包含网页的内容。通过点击不同的网页元素,您可以选择要抓取的数据。
-
选择完数据后,单击“导入”按钮,选择数据导入的位置(可以是新工作表或现有工作表),然后单击“确定”。
-
Excel将从网页上抓取选定的数据,并将其导入到您选择的位置。您可以使用Excel的强大功能进一步处理和分析这些数据。
Excel的从网页获取数据功能的应用场景
-
股票和金融数据分析: 金融分析师可以使用这一功能来从不同的金融网站获取股票价格、汇率和其他金融数据,以便进行投资决策。
-
市场研究: 市场研究人员可以从各种在线新闻源和市场数据网站中获取信息,以了解市场趋势和竞争对手的表现。
-
天气预报: 想要实时了解天气情况的人可以使用这一功能从气象网站中获取最新的天气数据。
-
竞争情报: 公司可以使用这一功能来监测竞争对手的价格、产品信息和市场份额等数据,以制定竞争策略。
-
科研和数据分析: 科研人员可以从各种在线数据库和科学网站中抓取数据,以支持他们的研究项目。
2 公式函数篇
在提供的配套excel文件中以下大部分函数都有实例,比较实用的一些函数如下所示:
- vlookup
- index
- match
- if/sumif/countif/averageif/sumifs/countifs/averageifs
- left/mid/right
- text
- indirect
- find
- iferror
- count/counta
- 一些公式中的运算符
- today
- and/or
- 数组常量及运算
- OFFSET
- choose
- TRANSPOSE
- FREQUENCY
- SMALL/LARGE
- PERCENTILE.INC
- SORT
2.1 查找函数
实用频率比较高的有VLOOKUP、LOOKUP、MATCH+indirect。
-
VLOOKUP函数(垂直查找):
VLOOKUP
函数用于在垂直列中查找特定值,并返回该值所在行的相关数据。- 语法:
=VLOOKUP(要查找的值, 查找范围, 返回列的索引, [是否精确匹配])
- 示例:
=VLOOKUP(A2, B2:E10, 3, FALSE)
会在B2:E10范围内查找A2的值,并返回找到的值所在行的第三列的值。
-
HLOOKUP函数(水平查找):
HLOOKUP
函数与VLOOKUP
类似,但是它在水平行中查找值。- 语法:
=HLOOKUP(要查找的值, 查找范围, 返回行的索引, [是否精确匹配])
-
LOOKUP函数:
LOOKUP
函数用于查找某个值在一列或一行中的位置,并返回相应的值。- 语法:
=LOOKUP(要查找的值, 查找范围或数组)
- 示例:
=LOOKUP(A2, B2:B10)
会在B2:B10范围内查找A2的值,并返回相应的值。
-
MATCH+indirect(一般要配合indirect函数使用,配合index更高级)函数:
MATCH
函数用于查找特定值在范围中的位置,并返回其相对位置(行号或列号)。- 语法:
=MATCH(要查找的值, 查找范围, [匹配类型])
- 示例:
=MATCH(A2, B2:B10, 0)
会在B2:B10范围内查找A2的值,并返回其相对位置。
-
INDEX函数:
INDEX
函数结合MATCH
函数可以根据相对位置从数组中检索数据。- 语法:
=INDEX(数组, 行号, 列号)
- 示例:
=INDEX(B2:E10, MATCH(A2, B2:B10, 0), 3)
会在B2:E10范围内查找A2的值的相对位置,然后返回相应行和列的数据。
-
SEARCH函数:
SEARCH
函数用于在文本中查找某个子串,并返回其第一个出现的位置。- 语法:
=SEARCH(要查找的文本, 在文本中查找的文本, [起始位置])
-
FIND函数:
FIND
函数与SEARCH
函数类似,但是它区分大小写。- 语法:
=FIND(要查找的文本, 在文本中查找的文本, [起始位置])
-
FILTER函数:
FILTER
函数用于根据指定的条件筛选数据,并返回符合条件的结果。- 语法:
=FILTER(数据范围, 条件范围)
- 示例:
=FILTER(A2:A10, B2:B10="条件")
会返回在B2:B10列中条件满足的对应A列的值。
2.2 条件函数
-
IF函数(条件函数的基础):
IF
函数是Excel中最基本的条件函数,它根据指定的条件返回不同的值。- 语法:
=IF(条件, 如果条件为真返回的值, 如果条件为假返回的值)
- 示例:
=IF(A1>10, "大于10", "不大于10")
会根据A1单元格的值返回不同的结果。
-
SUMIF和SUMIFS函数:
SUMIF
函数用于根据条件对一列或多列进行求和。- 语法:
=SUMIF(范围, 条件, [求和范围])
SUMIFS
函数是SUMIF
的多条件版本,可以根据多个条件对范围进行求和。- 语法:
=SUMIFS(求和范围, 条件范围1, 条件1, 条件范围2, 条件2, ...)
-
COUNTIF和COUNTIFS函数:
COUNTIF
函数用于根据条件计算一列或多列中符合条件的单元格数量。- 语法:
=COUNTIF(范围, 条件)
COUNTIFS
函数是COUNTIF
的多条件版本,可以根据多个条件计算符合条件的单元格数量。- 语法:
=COUNTIFS(条件范围1, 条件1, 条件范围2, 条件2, ...)
-
AVERAGEIF和AVERAGEIFS函数:
AVERAGEIF
函数用于根据条件计算一列或多列中符合条件的单元格的平均值。- 语法:
=AVERAGEIF(范围, 条件, [求平均范围])
AVERAGEIFS
函数是AVERAGEIF
的多条件版本,可以根据多个条件计算符合条件的单元格的平均值。- 语法:
=AVERAGEIFS(求平均范围, 条件范围1, 条件1, 条件范围2, 条件2, ...)
-
MINIFS和MAXIFS函数:
MINIFS
函数用于根据多个条件返回一列或多列中符合条件的最小值。- 语法:
=MINIFS(范围, 条件范围1, 条件1, 条件范围2, 条件2, ...)
MAXIFS
函数是MINIFS
的类似函数,用于返回符合条件的最大值。
-
IFERROR函数:
IFERROR
函数用于检查某个公式是否返回错误,并根据结果返回指定值。- 语法:
=IFERROR(要检查的公式, 如果错误返回的值)
- 示例:
=IFERROR(A1/B1, "除数不能为零")
会在A1/B1产生错误时返回指定的错误消息。
2.3 字符串函数
-
CONCATENATE函数(合并文本):
CONCATENATE
函数用于将多个文本字符串合并成一个字符串。- 语法:
=CONCATENATE(文本1, 文本2, ...)
- 示例:
=CONCATENATE("Hello", " ", "World")
将合并成"Hello World"。
-
LEN函数(计算字符串长度):
LEN
函数用于计算字符串中字符的数量,包括空格。- 语法:
=LEN(文本)
- 示例:
=LEN("Excel")
将返回值5,因为字符串"Excel"包含5个字符。
-
LEFT函数和RIGHT函数(提取左边和右边的字符):
LEFT
函数用于从文本字符串的左边提取指定数量的字符。RIGHT
函数用于从文本字符串的右边提取指定数量的字符。- 语法:
=LEFT(文本, 字符数)
和=RIGHT(文本, 字符数)
- 示例:
=LEFT("Excel Functions", 5)
将返回"Excel",=RIGHT("Excel Functions", 8)
将返回"Functions"。
-
MID函数(提取中间的字符):
MID
函数用于从文本字符串的中间位置提取指定数量的字符。- 语法:
=MID(文本, 开始位置, 字符数)
- 示例:
=MID("Excel Functions", 7, 9)
将返回"Functions"。
-
FIND和SEARCH函数(查找文本位置):
FIND
函数和SEARCH
函数用于查找一个文本字符串在另一个文本字符串中的位置。FIND
函数区分大小写,而SEARCH
函数不区分大小写。- 语法:
=FIND(要查找的文本, 在文本中查找的文本, [起始位置])
和=SEARCH(要查找的文本, 在文本中查找的文本, [起始位置])
- 示例:
=FIND("l", "Hello", 3)
将返回值3,因为第三个位置的字符是"l"。
-
SUBSTITUTE函数(替换文本):
SUBSTITUTE
函数用于在文本字符串中替换指定的文本。- 语法:
=SUBSTITUTE(原文本, 要替换的文本, 替换为的文本, [替换次数])
- 示例:
=SUBSTITUTE("Excel is great", "Excel", "Spreadsheets")
将替换"Excel"为"Spreadsheets",返回"Spreadsheets is great"。
-
LOWER、UPPER和PROPER函数(文本大小写转换):
LOWER
函数将文本字符串中的所有字符转换为小写。UPPER
函数将文本字符串中的所有字符转换为大写。PROPER
函数将文本字符串中的每个单词的首字母转换为大写,其余字母转换为小写。- 语法:
=LOWER(文本)
、=UPPER(文本)
和=PROPER(文本)
- 示例:
=UPPER("excel")
将返回"EXCEL"。
-
TRIM函数(删除文本中的多余空格):
TRIM
函数用于删除文本字符串中多余的空格,只保留单词之间的一个空格。- 语法:
=TRIM(文本)
- 示例:
=TRIM(" Excel Functions ")
将返回"Excel Functions"。
2.4 日期与时间函数
-
TODAY函数(当前日期):
TODAY
函数用于返回当前日期。- 语法:
=TODAY()
- 示例:
=TODAY()
将返回当前日期,如"2023-09-10"。
-
NOW函数(当前日期和时间):
NOW
函数用于返回当前日期和时间。- 语法:
=NOW()
- 示例:
=NOW()
将返回当前日期和时间,如"2023-09-10 14:30:00"。
-
DATE函数(创建日期):
DATE
函数用于根据给定的年、月和日创建日期。- 语法:
=DATE(年, 月, 日)
- 示例:
=DATE(2023, 9, 10)
将返回日期"2023-09-10"。
-
TIME函数(创建时间):
TIME
函数用于根据给定的小时、分钟和秒创建时间。- 语法:
=TIME(小时, 分钟, 秒)
- 示例:
=TIME(14, 30, 0)
将返回时间"14:30:00"。
-
DATEDIF函数(计算日期差异):
DATEDIF
函数用于计算两个日期之间的差异,可以计算年、月、日等。- 语法:
=DATEDIF(开始日期, 结束日期, 单位)
- 示例:
=DATEDIF(A1, A2, "y")
将计算A1和A2之间的年份差异。
-
YEAR、MONTH和DAY函数(提取日期的各个部分):
YEAR
函数用于提取日期的年份部分。MONTH
函数用于提取日期的月份部分。DAY
函数用于提取日期的日部分。- 语法:
=YEAR(日期)
,=MONTH(日期)
,=DAY(日期)
- 示例:
=YEAR(A1)
,=MONTH(A1)
,=DAY(A1)
将分别提取A1单元格中日期的年、月和日。
-
HOUR、MINUTE和SECOND函数(提取时间的各个部分):
HOUR
函数用于提取时间的小时部分。MINUTE
函数用于提取时间的分钟部分。SECOND
函数用于提取时间的秒部分。- 语法:
=HOUR(时间)
,=MINUTE(时间)
,=SECOND(时间)
- 示例:
=HOUR(B1)
,=MINUTE(B1)
,=SECOND(B1)
将分别提取B1单元格中时间的小时、分钟和秒。
-
TEXT函数(格式化日期和时间):
TEXT
函数用于将日期和时间以自定义格式显示。- 语法:
=TEXT(日期或时间, "自定义格式")
- 示例:
=TEXT(A1, "yyyy年mm月dd日")
将以"2023年09月10日"的格式显示A1中的日期
2.5 逻辑函数
-
IF函数(条件函数的基础):
IF
函数用于根据指定条件返回不同的值。- 语法:
=IF(条件, 如果条件为真返回的值, 如果条件为假返回的值)
- 示例:
=IF(A1>10, "大于10", "不大于10")
会根据A1的值返回不同的结果。
-
AND函数(逻辑与):
AND
函数用于判断多个条件是否同时成立,只有当所有条件都为真时才返回真。- 语法:
=AND(条件1, 条件2, ...)
- 示例:
=AND(A1>5, B1<10)
只有当A1大于5且B1小于10时才返回真。
-
OR函数(逻辑或):
OR
函数用于判断多个条件是否至少有一个成立,只要有一个条件为真就返回真。- 语法:
=OR(条件1, 条件2, ...)
- 示例:
=OR(A1>5, B1>10)
只要A1大于5或B1大于10,就会返回真。
-
NOT函数(逻辑非):
NOT
函数用于取反一个逻辑值,将真变为假,将假变为真。- 语法:
=NOT(逻辑值)
- 示例:
=NOT(A1>5)
将取反A1是否大于5的判断。
-
IFERROR函数(处理错误):
IFERROR
函数用于检查某个公式是否返回错误,并根据结果返回指定值。- 语法:
=IFERROR(要检查的公式, 如果错误返回的值)
- 示例:
=IFERROR(A1/B1, "除数不能为零")
会在A1/B1产生错误时返回指定的错误消息。
-
IFNA函数(处理#N/A错误):
IFNA
函数用于检查某个公式是否返回#N/A错误,并根据结果返回指定值。- 语法:
=IFNA(要检查的公式, 如果#N/A返回的值)
- 示例:
=IFNA(VLOOKUP(A1, B1:C10, 2, FALSE), "未找到")
会在VLOOKUP返回#N/A错误时返回指定的消息。
-
XOR函数(逻辑异或):
XOR
函数用于判断多个条件是否仅有一个条件成立,只有一个条件为真时才返回真。- 语法:
=XOR(条件1, 条件2, ...)
- 示例:
=XOR(A1>5, B1>10)
只有A1大于5或B1大于10中仅有一个条件成立时才返回真。
-
逻辑测试函数(ISEMPTY、ISNUMBER、ISTEXT等):
- Excel提供了一系列逻辑测试函数,用于测试单元格是否为空、是否包含数字、是否包含文本等。
- 例如,
=ISNUMBER(A1)
用于测试A1单元格是否包含数字。
2.6 数组常量及运算
在Excel中,数组常量和数组运算是用于处理多个数值或数据集的重要功能。它们允许您执行复杂的计算和分析,而无需使用单个单元格引用。以下是有关Excel中数组常量和数组运算的介绍:
数组常量:
数组常量是一组数值、文本或逻辑值,按照特定的结构排列在一起。它们可以直接输入到公式中,而不必引用单个单元格。在Excel中,数组常量通常使用大括号 {}
括起来,每个元素之间用分号 ;
或逗号 ,
分隔。
例如,以下是包含数组常量的示例:
数组运算:
在Excel中,您可以使用数组运算来执行一系列对整个数组或数组范围的操作。数组运算可以同时处理多个值,而不需要使用循环或多个单元格引用。以下是一些常见的数组运算:
-
数组求和:
- 使用
SUM
函数可以对数组中的所有值进行求和。 - 示例:
=SUM({1, 2, 3, 4, 5})
将返回15。
- 使用
-
数组平均值:
- 使用
AVERAGE
函数可以计算数组中的所有值的平均值。 - 示例:
=AVERAGE({1, 2, 3, 4, 5})
将返回3。
- 使用
-
数组最大值和最小值:
- 使用
MAX
和MIN
函数可以分别找出数组中的最大值和最小值。 - 示例:
=MAX({1, 2, 3, 4, 5})
将返回5,=MIN({1, 2, 3, 4, 5})
将返回1。
- 使用
-
数组排序:
- 使用
SORT
函数可以对数组中的值进行升序或降序排序。 - 示例:
=SORT({5, 1, 4, 2, 3}, 1, TRUE)
将返回升序排序后的数组。
- 使用
-
数组过滤:
- 使用
FILTER
函数可以根据条件筛选数组中的值。 - 示例:
=FILTER({1, 2, 3, 4, 5}, {TRUE, FALSE, TRUE, TRUE, FALSE})
将返回{1, 3, 4},因为对应条件为TRUE的值被筛选出来。
- 使用
-
矩阵运算:
- Excel支持矩阵运算,包括矩阵乘法、矩阵加法等。
- 示例:
=MMULT({{1, 2}, {3, 4}}, {{5, 6}, {7, 8}})
将进行矩阵乘法运算。
2.7 常用数组函数
-
OFFSET函数:
OFFSET
函数用于根据指定的起始单元格引用来偏移指定的行数和列数,然后返回目标单元格的引用。- 语法:
=OFFSET(起始单元格, 行偏移, 列偏移, [行数], [列数])
- 例子:
=OFFSET(A1, 2, 1)
将返回A1下方2行、右侧1列的单元格引用。
-
CHOOSE函数:
CHOOSE
函数用于从多个选项中选择一个值,根据指定的索引号。- 语法:
=CHOOSE(索引号, 选项1, 选项2, ...)
- 例子:
=CHOOSE(3, "苹果", "香蕉", "橙子", "葡萄")
将返回"橙子",因为它对应于索引号3。
-
TRANSPOSE函数:
TRANSPOSE
函数用于将行转换为列,或将列转换为行,重新排列数据。- 语法:
=TRANSPOSE(范围)
- 例子:
=TRANSPOSE(A1:D1)
将A1到D1的行数据转换为列。
-
FREQUENCY函数:
FREQUENCY
函数用于计算数据集中各数值出现的频率分布。- 语法:
=FREQUENCY(数据范围, 分组范围)
- 例子:
=FREQUENCY(A1:A10, B1:B5)
将计算A1:A10中的数值在B1:B5分组范围内的频率。
-
SMALL和LARGE函数:
SMALL
函数用于返回数据集中的第k个最小值。LARGE
函数用于返回数据集中的第k个最大值。- 语法:
=SMALL(数据范围, k)
和=LARGE(数据范围, k)
- 例子:
=SMALL(C1:C10, 3)
将返回C1:C10中的第三个最小值。
-
PERCENTILE.INC函数:
PERCENTILE.INC
函数用于计算数据集中的指定百分位数。- 语法:
=PERCENTILE.INC(数据范围, 百分位数)
- 例子:
=PERCENTILE.INC(D1:D20, 0.75)
将返回D1:D20中的第75%百分位数。
-
SORT函数:
SORT
函数用于按指定顺序对数据范围进行排序。- 语法:
=SORT(数据范围, [排序方式], [按列], [按顺序], [自定义列表])
- 例子:
=SORT(E1:E10, 1, 1)
将按升序对E1:E10进行排序。
3 vba篇
3.1 录制宏
宏录制
3.2 利用chatgpt改造录制的宏
将刚刚录制成功的宏已经生成了代码,复制代码到chatgpt,让他帮我们改造一下这个代码,如下所示。
指令是【帮我把这个代码改造一下,让其能够循环格式刷后面的行】
检查一下chatgpt生成的代码,确实能够满足需求,循环刷后面的行。
生成的代码复制回刚刚的excel的代码编辑器中覆盖原代码。
这样这个宏已经能够使用了。
3.3 按钮/窗体
想为刚刚的宏添加一个按钮:
-
打开 Excel 并确保 "开发者" 选项卡可见。如果您不看到 "开发者" 选项卡,请执行以下步骤以启用它:
a. 在 Excel 中,点击 "文件"。 b. 选择 "选项"。 c. 在 "Excel 选项" 对话框中,点击 "自定义功能区"。 d. 在右侧的 "主选项卡" 区域,勾选 "开发者"。 e. 点击 "确定"。
-
在 "开发者" 选项卡中,找到 "插入" 控件组。
-
在 "插入" 控件组中,选择 "按钮(ActiveX 控件)"。您会看到一个十字形的光标。
-
在工作表上单击并拖动以创建按钮的大小和位置。
-
在创建按钮后,会弹出 "按钮向导" 对话框。在 "选择现有宏" 选项中,选择您要与按钮关联的宏。如果要创建新的宏,请选择 "新建" 并按照向导的指示进行操作。
-
点击 "完成"。
现在,已经在工作表上创建了一个按钮,并将其与所选的宏相关联。每当您单击该按钮,相关的宏将执行。如果您需要调整按钮的外观或其他属性,可以右键单击按钮并选择 "属性" 以进行进一步设置。
我们来试一试刚刚这一套组合拳下来实现了什么功能。
宏演示
3.4 自定义函数
使用 VBA(Visual Basic for Applications)自定义函数是在 Microsoft Excel 中添加自定义功能的一种强大方法。自定义函数允许您执行各种计算、数据处理和自动化任务,并将这些功能嵌入到 Excel 工作表中,以便稍后使用。下面是创建和使用 VBA 自定义函数的基本步骤:
1. 打开 Excel 和 VBA 编辑器: 打开您的 Excel 工作簿,然后按 ALT + F11
键,以打开 VBA 编辑器。
2. 在 VBA 编辑器中插入一个新的模块: 在 VBA 编辑器的左侧 "项目资源管理器" 窗格中,展开您的工作簿项目,然后右键单击 "Microsoft Excel 对象",选择 "插入" > "模块"。这将创建一个新的模块,您可以在其中编写自定义函数。
3. 编写自定义函数: 在模块中,您可以编写您的自定义函数。自定义函数的基本结构如下:
Function 函数名称(参数1 As 数据类型, 参数2 As 数据类型, ...) As 返回值数据类型' 函数的主体代码' 使用参数执行计算' 将结果赋给函数名称并使用 "Return" 语句返回
End Function
下面是一个示例自定义函数,它将两个数相加并返回结果:
Function AddNumbers(Number1 As Double, Number2 As Double) As DoubleAddNumbers = Number1 + Number2
End Function
4. 使用自定义函数: 现在您已经创建了自定义函数,可以在 Excel 工作表中使用它。在任何单元格中,可以输入函数名称,并传递所需的参数。例如:
- 在单元格 A1 中输入
=AddNumbers(5, 7)
,然后按 Enter。单元格 A1 将显示 12,这是自定义函数的结果。
5. 调试和修改自定义函数(可选): 如果您的自定义函数不如预期工作,您可以返回 VBA 编辑器并对其进行调试和修改。您可以使用 VBA 编辑器的调试工具来跟踪代码执行并检查问题。
6. 保存工作簿: 请确保保存包含自定义函数的 Excel 工作簿,以便在将来打开时可以继续使用自定义函数。
自己尝试一下,编写一个宏,实现统计不同的值出现的频率:
代码:
Function 统计不同值个数(ByVal 数据区域 As Range) As VariantDim 数据集 As ObjectSet 数据集 = CreateObject("Scripting.Dictionary")Dim 单元格 As RangeDim 值 As Variant' 遍历数据区域并将值添加到字典For Each 单元格 In 数据区域值 = 单元格.ValueIf Not 数据集.Exists(值) Then数据集.Add 值, 1Else数据集(值) = 数据集(值) + 1End IfNext 单元格' 创建一个数组来保存结果Dim 结果数组() As VariantReDim 结果数组(1 To 数据集.Count, 1 To 2)Dim 行号 As Integer行号 = 1For Each 值 In 数据集.Keys结果数组(行号, 1) = 值结果数组(行号, 2) = 数据集(值)行号 = 行号 + 1Next 值统计不同值个数 = 结果数组
End Function
功能演示: