【excel】万字长文,一些实用excel技巧,金融财务行业巨实用(最后有干货,配合chatgpt让你成为excel大佬)_excel 价格处理技巧-程序员宅基地

技术标签: 量化  金融  

 本文主要记录一些在工作中经常能用到的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、统计各家基金管理公司的不同投资类型的基金有多少只

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的从网页获取数据功能非常简单,基本步骤:

  1. 打开Excel并创建一个新工作表或打开一个现有的工作表。

  2. 转到“数据”选项卡,然后选择“从网页”选项。

  3. 在弹出的对话框中,输入您要抓取数据的网页地址(URL)。Excel会自动访问该网页并加载数据。

  4. 在加载网页后,您将看到一个网页浏览器窗口,其中包含网页的内容。通过点击不同的网页元素,您可以选择要抓取的数据。

  5. 选择完数据后,单击“导入”按钮,选择数据导入的位置(可以是新工作表或现有工作表),然后单击“确定”。

  6. Excel将从网页上抓取选定的数据,并将其导入到您选择的位置。您可以使用Excel的强大功能进一步处理和分析这些数据。

Excel的从网页获取数据功能的应用场景

  1. 股票和金融数据分析: 金融分析师可以使用这一功能来从不同的金融网站获取股票价格、汇率和其他金融数据,以便进行投资决策。

  2. 市场研究: 市场研究人员可以从各种在线新闻源和市场数据网站中获取信息,以了解市场趋势和竞争对手的表现。

  3. 天气预报: 想要实时了解天气情况的人可以使用这一功能从气象网站中获取最新的天气数据。

  4. 竞争情报: 公司可以使用这一功能来监测竞争对手的价格、产品信息和市场份额等数据,以制定竞争策略。

  5. 科研和数据分析: 科研人员可以从各种在线数据库和科学网站中抓取数据,以支持他们的研究项目。

2 公式函数篇

在提供的配套excel文件中以下大部分函数都有实例,比较实用的一些函数如下所示:

  1. vlookup
  2. index
  3. match
  4. if/sumif/countif/averageif/sumifs/countifs/averageifs
  5. left/mid/right
  6. text
  7. indirect
  8. find
  9. iferror
  10. count/counta
  11. 一些公式中的运算符
  12. today
  13. and/or
  14. 数组常量及运算
  15. OFFSET
  16. choose
  17. TRANSPOSE
  18. FREQUENCY
  19. SMALL/LARGE
  20. PERCENTILE.INC
  21. SORT
     

2.1 查找函数

实用频率比较高的有VLOOKUP、LOOKUP、MATCH+indirect。

  1. VLOOKUP函数(垂直查找):

    • VLOOKUP函数用于在垂直列中查找特定值,并返回该值所在行的相关数据。
    • 语法:=VLOOKUP(要查找的值, 查找范围, 返回列的索引, [是否精确匹配])
    • 示例:=VLOOKUP(A2, B2:E10, 3, FALSE)会在B2:E10范围内查找A2的值,并返回找到的值所在行的第三列的值。
  2. HLOOKUP函数(水平查找):

    • HLOOKUP函数与VLOOKUP类似,但是它在水平行中查找值。
    • 语法:=HLOOKUP(要查找的值, 查找范围, 返回行的索引, [是否精确匹配])
  3. LOOKUP函数:

    • LOOKUP函数用于查找某个值在一列或一行中的位置,并返回相应的值。
    • 语法:=LOOKUP(要查找的值, 查找范围或数组)
    • 示例:=LOOKUP(A2, B2:B10)会在B2:B10范围内查找A2的值,并返回相应的值。
  4. MATCH+indirect(一般要配合indirect函数使用,配合index更高级)函数:

    • MATCH函数用于查找特定值在范围中的位置,并返回其相对位置(行号或列号)。
    • 语法:=MATCH(要查找的值, 查找范围, [匹配类型])
    • 示例:=MATCH(A2, B2:B10, 0)会在B2:B10范围内查找A2的值,并返回其相对位置。
  5. INDEX函数:

    • INDEX函数结合MATCH函数可以根据相对位置从数组中检索数据。
    • 语法:=INDEX(数组, 行号, 列号)
    • 示例:=INDEX(B2:E10, MATCH(A2, B2:B10, 0), 3)会在B2:E10范围内查找A2的值的相对位置,然后返回相应行和列的数据。
  6. SEARCH函数:

    • SEARCH函数用于在文本中查找某个子串,并返回其第一个出现的位置。
    • 语法:=SEARCH(要查找的文本, 在文本中查找的文本, [起始位置])
  7. FIND函数:

    • FIND函数与SEARCH函数类似,但是它区分大小写。
    • 语法:=FIND(要查找的文本, 在文本中查找的文本, [起始位置])
  8. FILTER函数:

    • FILTER函数用于根据指定的条件筛选数据,并返回符合条件的结果。
    • 语法:=FILTER(数据范围, 条件范围)
    • 示例:=FILTER(A2:A10, B2:B10="条件")会返回在B2:B10列中条件满足的对应A列的值。

2.2 条件函数

  1. IF函数(条件函数的基础):

    • IF函数是Excel中最基本的条件函数,它根据指定的条件返回不同的值。
    • 语法:=IF(条件, 如果条件为真返回的值, 如果条件为假返回的值)
    • 示例:=IF(A1>10, "大于10", "不大于10")会根据A1单元格的值返回不同的结果。
  2. SUMIF和SUMIFS函数:

    • SUMIF函数用于根据条件对一列或多列进行求和。
    • 语法:=SUMIF(范围, 条件, [求和范围])
    • SUMIFS函数是SUMIF的多条件版本,可以根据多个条件对范围进行求和。
    • 语法:=SUMIFS(求和范围, 条件范围1, 条件1, 条件范围2, 条件2, ...)
  3. COUNTIF和COUNTIFS函数:

    • COUNTIF函数用于根据条件计算一列或多列中符合条件的单元格数量。
    • 语法:=COUNTIF(范围, 条件)
    • COUNTIFS函数是COUNTIF的多条件版本,可以根据多个条件计算符合条件的单元格数量。
    • 语法:=COUNTIFS(条件范围1, 条件1, 条件范围2, 条件2, ...)
  4. AVERAGEIF和AVERAGEIFS函数:

    • AVERAGEIF函数用于根据条件计算一列或多列中符合条件的单元格的平均值。
    • 语法:=AVERAGEIF(范围, 条件, [求平均范围])
    • AVERAGEIFS函数是AVERAGEIF的多条件版本,可以根据多个条件计算符合条件的单元格的平均值。
    • 语法:=AVERAGEIFS(求平均范围, 条件范围1, 条件1, 条件范围2, 条件2, ...)
  5. MINIFS和MAXIFS函数:

    • MINIFS函数用于根据多个条件返回一列或多列中符合条件的最小值。
    • 语法:=MINIFS(范围, 条件范围1, 条件1, 条件范围2, 条件2, ...)
    • MAXIFS函数是MINIFS的类似函数,用于返回符合条件的最大值。
  6. IFERROR函数:

    • IFERROR函数用于检查某个公式是否返回错误,并根据结果返回指定值。
    • 语法:=IFERROR(要检查的公式, 如果错误返回的值)
    • 示例:=IFERROR(A1/B1, "除数不能为零")会在A1/B1产生错误时返回指定的错误消息。

2.3 字符串函数

  1. CONCATENATE函数(合并文本):

    • CONCATENATE函数用于将多个文本字符串合并成一个字符串。
    • 语法:=CONCATENATE(文本1, 文本2, ...)
    • 示例:=CONCATENATE("Hello", " ", "World")将合并成"Hello World"。
  2. LEN函数(计算字符串长度):

    • LEN函数用于计算字符串中字符的数量,包括空格。
    • 语法:=LEN(文本)
    • 示例:=LEN("Excel")将返回值5,因为字符串"Excel"包含5个字符。
  3. LEFT函数和RIGHT函数(提取左边和右边的字符):

    • LEFT函数用于从文本字符串的左边提取指定数量的字符。
    • RIGHT函数用于从文本字符串的右边提取指定数量的字符。
    • 语法:=LEFT(文本, 字符数)=RIGHT(文本, 字符数)
    • 示例:=LEFT("Excel Functions", 5)将返回"Excel",=RIGHT("Excel Functions", 8)将返回"Functions"。
  4. MID函数(提取中间的字符):

    • MID函数用于从文本字符串的中间位置提取指定数量的字符。
    • 语法:=MID(文本, 开始位置, 字符数)
    • 示例:=MID("Excel Functions", 7, 9)将返回"Functions"。
  5. FIND和SEARCH函数(查找文本位置):

    • FIND函数和SEARCH函数用于查找一个文本字符串在另一个文本字符串中的位置。
    • FIND函数区分大小写,而SEARCH函数不区分大小写。
    • 语法:=FIND(要查找的文本, 在文本中查找的文本, [起始位置])=SEARCH(要查找的文本, 在文本中查找的文本, [起始位置])
    • 示例:=FIND("l", "Hello", 3)将返回值3,因为第三个位置的字符是"l"。
  6. SUBSTITUTE函数(替换文本):

    • SUBSTITUTE函数用于在文本字符串中替换指定的文本。
    • 语法:=SUBSTITUTE(原文本, 要替换的文本, 替换为的文本, [替换次数])
    • 示例:=SUBSTITUTE("Excel is great", "Excel", "Spreadsheets")将替换"Excel"为"Spreadsheets",返回"Spreadsheets is great"。
  7. LOWER、UPPER和PROPER函数(文本大小写转换):

    • LOWER函数将文本字符串中的所有字符转换为小写。
    • UPPER函数将文本字符串中的所有字符转换为大写。
    • PROPER函数将文本字符串中的每个单词的首字母转换为大写,其余字母转换为小写。
    • 语法:=LOWER(文本)=UPPER(文本)=PROPER(文本)
    • 示例:=UPPER("excel")将返回"EXCEL"。
  8. TRIM函数(删除文本中的多余空格):

    • TRIM函数用于删除文本字符串中多余的空格,只保留单词之间的一个空格。
    • 语法:=TRIM(文本)
    • 示例:=TRIM(" Excel Functions ")将返回"Excel Functions"。

2.4 日期与时间函数

  1. TODAY函数(当前日期):

    • TODAY函数用于返回当前日期。
    • 语法:=TODAY()
    • 示例:=TODAY()将返回当前日期,如"2023-09-10"。
  2. NOW函数(当前日期和时间):

    • NOW函数用于返回当前日期和时间。
    • 语法:=NOW()
    • 示例:=NOW()将返回当前日期和时间,如"2023-09-10 14:30:00"。
  3. DATE函数(创建日期):

    • DATE函数用于根据给定的年、月和日创建日期。
    • 语法:=DATE(年, 月, 日)
    • 示例:=DATE(2023, 9, 10)将返回日期"2023-09-10"。
  4. TIME函数(创建时间):

    • TIME函数用于根据给定的小时、分钟和秒创建时间。
    • 语法:=TIME(小时, 分钟, 秒)
    • 示例:=TIME(14, 30, 0)将返回时间"14:30:00"。
  5. DATEDIF函数(计算日期差异):

    • DATEDIF函数用于计算两个日期之间的差异,可以计算年、月、日等。
    • 语法:=DATEDIF(开始日期, 结束日期, 单位)
    • 示例:=DATEDIF(A1, A2, "y")将计算A1和A2之间的年份差异。
  6. YEAR、MONTH和DAY函数(提取日期的各个部分):

    • YEAR函数用于提取日期的年份部分。
    • MONTH函数用于提取日期的月份部分。
    • DAY函数用于提取日期的日部分。
    • 语法:=YEAR(日期), =MONTH(日期), =DAY(日期)
    • 示例:=YEAR(A1), =MONTH(A1), =DAY(A1)将分别提取A1单元格中日期的年、月和日。
  7. HOUR、MINUTE和SECOND函数(提取时间的各个部分):

    • HOUR函数用于提取时间的小时部分。
    • MINUTE函数用于提取时间的分钟部分。
    • SECOND函数用于提取时间的秒部分。
    • 语法:=HOUR(时间), =MINUTE(时间), =SECOND(时间)
    • 示例:=HOUR(B1), =MINUTE(B1), =SECOND(B1)将分别提取B1单元格中时间的小时、分钟和秒。
  8. TEXT函数(格式化日期和时间):

    • TEXT函数用于将日期和时间以自定义格式显示。
    • 语法:=TEXT(日期或时间, "自定义格式")
    • 示例:=TEXT(A1, "yyyy年mm月dd日")将以"2023年09月10日"的格式显示A1中的日期

2.5 逻辑函数

  1. IF函数(条件函数的基础):

    • IF函数用于根据指定条件返回不同的值。
    • 语法:=IF(条件, 如果条件为真返回的值, 如果条件为假返回的值)
    • 示例:=IF(A1>10, "大于10", "不大于10")会根据A1的值返回不同的结果。
  2. AND函数(逻辑与):

    • AND函数用于判断多个条件是否同时成立,只有当所有条件都为真时才返回真。
    • 语法:=AND(条件1, 条件2, ...)
    • 示例:=AND(A1>5, B1<10)只有当A1大于5且B1小于10时才返回真。
  3. OR函数(逻辑或):

    • OR函数用于判断多个条件是否至少有一个成立,只要有一个条件为真就返回真。
    • 语法:=OR(条件1, 条件2, ...)
    • 示例:=OR(A1>5, B1>10)只要A1大于5或B1大于10,就会返回真。
  4. NOT函数(逻辑非):

    • NOT函数用于取反一个逻辑值,将真变为假,将假变为真。
    • 语法:=NOT(逻辑值)
    • 示例:=NOT(A1>5)将取反A1是否大于5的判断。
  5. IFERROR函数(处理错误):

    • IFERROR函数用于检查某个公式是否返回错误,并根据结果返回指定值。
    • 语法:=IFERROR(要检查的公式, 如果错误返回的值)
    • 示例:=IFERROR(A1/B1, "除数不能为零")会在A1/B1产生错误时返回指定的错误消息。
  6. IFNA函数(处理#N/A错误):

    • IFNA函数用于检查某个公式是否返回#N/A错误,并根据结果返回指定值。
    • 语法:=IFNA(要检查的公式, 如果#N/A返回的值)
    • 示例:=IFNA(VLOOKUP(A1, B1:C10, 2, FALSE), "未找到")会在VLOOKUP返回#N/A错误时返回指定的消息。
  7. XOR函数(逻辑异或):

    • XOR函数用于判断多个条件是否仅有一个条件成立,只有一个条件为真时才返回真。
    • 语法:=XOR(条件1, 条件2, ...)
    • 示例:=XOR(A1>5, B1>10)只有A1大于5或B1大于10中仅有一个条件成立时才返回真。
  8. 逻辑测试函数(ISEMPTY、ISNUMBER、ISTEXT等):

    • Excel提供了一系列逻辑测试函数,用于测试单元格是否为空、是否包含数字、是否包含文本等。
    • 例如,=ISNUMBER(A1)用于测试A1单元格是否包含数字。

2.6 数组常量及运算

在Excel中,数组常量和数组运算是用于处理多个数值或数据集的重要功能。它们允许您执行复杂的计算和分析,而无需使用单个单元格引用。以下是有关Excel中数组常量和数组运算的介绍:

数组常量:

数组常量是一组数值、文本或逻辑值,按照特定的结构排列在一起。它们可以直接输入到公式中,而不必引用单个单元格。在Excel中,数组常量通常使用大括号 {} 括起来,每个元素之间用分号 ; 或逗号 , 分隔。

例如,以下是包含数组常量的示例:

数组运算:

在Excel中,您可以使用数组运算来执行一系列对整个数组或数组范围的操作。数组运算可以同时处理多个值,而不需要使用循环或多个单元格引用。以下是一些常见的数组运算:

  1. 数组求和:

    • 使用SUM函数可以对数组中的所有值进行求和。
    • 示例:=SUM({1, 2, 3, 4, 5})将返回15。
  2. 数组平均值:

    • 使用AVERAGE函数可以计算数组中的所有值的平均值。
    • 示例:=AVERAGE({1, 2, 3, 4, 5})将返回3。
  3. 数组最大值和最小值:

    • 使用MAXMIN函数可以分别找出数组中的最大值和最小值。
    • 示例:=MAX({1, 2, 3, 4, 5})将返回5,=MIN({1, 2, 3, 4, 5})将返回1。
  4. 数组排序:

    • 使用SORT函数可以对数组中的值进行升序或降序排序。
    • 示例:=SORT({5, 1, 4, 2, 3}, 1, TRUE)将返回升序排序后的数组。
  5. 数组过滤:

    • 使用FILTER函数可以根据条件筛选数组中的值。
    • 示例:=FILTER({1, 2, 3, 4, 5}, {TRUE, FALSE, TRUE, TRUE, FALSE})将返回{1, 3, 4},因为对应条件为TRUE的值被筛选出来。
  6. 矩阵运算:

    • Excel支持矩阵运算,包括矩阵乘法、矩阵加法等。
    • 示例:=MMULT({ {1, 2}, {3, 4}}, { {5, 6}, {7, 8}})将进行矩阵乘法运算。

2.7 常用数组函数

  1. OFFSET函数:

    • OFFSET函数用于根据指定的起始单元格引用来偏移指定的行数和列数,然后返回目标单元格的引用。
    • 语法:=OFFSET(起始单元格, 行偏移, 列偏移, [行数], [列数])
    • 例子:=OFFSET(A1, 2, 1)将返回A1下方2行、右侧1列的单元格引用。
  2. CHOOSE函数:

    • CHOOSE函数用于从多个选项中选择一个值,根据指定的索引号。
    • 语法:=CHOOSE(索引号, 选项1, 选项2, ...)
    • 例子:=CHOOSE(3, "苹果", "香蕉", "橙子", "葡萄")将返回"橙子",因为它对应于索引号3。
  3. TRANSPOSE函数:

    • TRANSPOSE函数用于将行转换为列,或将列转换为行,重新排列数据。
    • 语法:=TRANSPOSE(范围)
    • 例子:=TRANSPOSE(A1:D1)将A1到D1的行数据转换为列。
  4. FREQUENCY函数:

    • FREQUENCY函数用于计算数据集中各数值出现的频率分布。
    • 语法:=FREQUENCY(数据范围, 分组范围)
    • 例子:=FREQUENCY(A1:A10, B1:B5)将计算A1:A10中的数值在B1:B5分组范围内的频率。
  5. SMALL和LARGE函数:

    • SMALL函数用于返回数据集中的第k个最小值。
    • LARGE函数用于返回数据集中的第k个最大值。
    • 语法:=SMALL(数据范围, k)=LARGE(数据范围, k)
    • 例子:=SMALL(C1:C10, 3)将返回C1:C10中的第三个最小值。
  6. PERCENTILE.INC函数:

    • PERCENTILE.INC函数用于计算数据集中的指定百分位数。
    • 语法:=PERCENTILE.INC(数据范围, 百分位数)
    • 例子:=PERCENTILE.INC(D1:D20, 0.75)将返回D1:D20中的第75%百分位数。
  7. SORT函数:

    • SORT函数用于按指定顺序对数据范围进行排序。
    • 语法:=SORT(数据范围, [排序方式], [按列], [按顺序], [自定义列表])
    • 例子:=SORT(E1:E10, 1, 1)将按升序对E1:E10进行排序。

3 vba篇

3.1 录制宏

宏录制

3.2 利用chatgpt改造录制的宏

将刚刚录制成功的宏已经生成了代码,复制代码到chatgpt,让他帮我们改造一下这个代码,如下所示。

指令是【帮我把这个代码改造一下,让其能够循环格式刷后面的行

检查一下chatgpt生成的代码,确实能够满足需求,循环刷后面的行。

生成的代码复制回刚刚的excel的代码编辑器中覆盖原代码。

这样这个宏已经能够使用了。

3.3 按钮/窗体

 想为刚刚的宏添加一个按钮:

  1. 打开 Excel 并确保 "开发者" 选项卡可见。如果您不看到 "开发者" 选项卡,请执行以下步骤以启用它:

    a. 在 Excel 中,点击 "文件"。 b. 选择 "选项"。 c. 在 "Excel 选项" 对话框中,点击 "自定义功能区"。 d. 在右侧的 "主选项卡" 区域,勾选 "开发者"。 e. 点击 "确定"。

  2. 在 "开发者" 选项卡中,找到 "插入" 控件组。

  3. 在 "插入" 控件组中,选择 "按钮(ActiveX 控件)"。您会看到一个十字形的光标。

  4. 在工作表上单击并拖动以创建按钮的大小和位置。

  5. 在创建按钮后,会弹出 "按钮向导" 对话框。在 "选择现有宏" 选项中,选择您要与按钮关联的宏。如果要创建新的宏,请选择 "新建" 并按照向导的指示进行操作。

  6. 点击 "完成"。

现在,已经在工作表上创建了一个按钮,并将其与所选的宏相关联。每当您单击该按钮,相关的宏将执行。如果您需要调整按钮的外观或其他属性,可以右键单击按钮并选择 "属性" 以进行进一步设置。

我们来试一试刚刚这一套组合拳下来实现了什么功能。

宏演示

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 Double
    AddNumbers = Number1 + Number2
End Function

4. 使用自定义函数: 现在您已经创建了自定义函数,可以在 Excel 工作表中使用它。在任何单元格中,可以输入函数名称,并传递所需的参数。例如:

  • 在单元格 A1 中输入 =AddNumbers(5, 7),然后按 Enter。单元格 A1 将显示 12,这是自定义函数的结果。

5. 调试和修改自定义函数(可选): 如果您的自定义函数不如预期工作,您可以返回 VBA 编辑器并对其进行调试和修改。您可以使用 VBA 编辑器的调试工具来跟踪代码执行并检查问题。

6. 保存工作簿: 请确保保存包含自定义函数的 Excel 工作簿,以便在将来打开时可以继续使用自定义函数。

自己尝试一下,编写一个宏,实现统计不同的值出现的频率:

代码:

Function 统计不同值个数(ByVal 数据区域 As Range) As Variant
    Dim 数据集 As Object
    Set 数据集 = CreateObject("Scripting.Dictionary")
    
    Dim 单元格 As Range
    Dim 值 As Variant
    
    ' 遍历数据区域并将值添加到字典
    For Each 单元格 In 数据区域
        值 = 单元格.Value
        If Not 数据集.Exists(值) Then
            数据集.Add 值, 1
        Else
            数据集(值) = 数据集(值) + 1
        End If
    Next 单元格
    
    ' 创建一个数组来保存结果
    Dim 结果数组() As Variant
    ReDim 结果数组(1 To 数据集.Count, 1 To 2)
    
    Dim 行号 As Integer
    行号 = 1
    
    For Each 值 In 数据集.Keys
        结果数组(行号, 1) = 值
        结果数组(行号, 2) = 数据集(值)
        行号 = 行号 + 1
    Next 值
    
    统计不同值个数 = 结果数组
End Function

功能演示:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/standingflower/article/details/132713187

智能推荐

JWT(Json Web Token)实现无状态登录_无状态token登录-程序员宅基地

文章浏览阅读685次。1.1.什么是有状态?有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,典型的设计如tomcat中的session。例如登录:用户登录后,我们把登录者的信息保存在服务端session中,并且给用户一个cookie值,记录对应的session。然后下次请求,用户携带cookie值来,我们就能识别到对应session,从而找到用户的信息。缺点是什么?服务端保存大量数据,增加服务端压力 服务端保存用户状态,无法进行水平扩展 客户端请求依赖服务.._无状态token登录

SDUT OJ逆置正整数-程序员宅基地

文章浏览阅读293次。SDUT OnlineJudge#include<iostream>using namespace std;int main(){int a,b,c,d;cin>>a;b=a%10;c=a/10%10;d=a/100%10;int key[3];key[0]=b;key[1]=c;key[2]=d;for(int i = 0;i<3;i++){ if(key[i]!=0) { cout<<key[i.

年终奖盲区_年终奖盲区表-程序员宅基地

文章浏览阅读2.2k次。年终奖采用的平均每月的收入来评定缴税级数的,速算扣除数也按照月份计算出来,但是最终减去的也是一个月的速算扣除数。为什么这么做呢,这样的收的税更多啊,年终也是一个月的收入,凭什么减去12*速算扣除数了?这个霸道(不要脸)的说法,我们只能合理避免的这些跨级的区域了,那具体是那些区域呢?可以参考下面的表格:年终奖一列标红的一对便是盲区的上下线,发放年终奖的数额一定一定要避免这个区域,不然公司多花了钱..._年终奖盲区表

matlab 提取struct结构体中某个字段所有变量的值_matlab读取struct类型数据中的值-程序员宅基地

文章浏览阅读7.5k次,点赞5次,收藏19次。matlab结构体struct字段变量值提取_matlab读取struct类型数据中的值

Android fragment的用法_android reader fragment-程序员宅基地

文章浏览阅读4.8k次。1,什么情况下使用fragment通常用来作为一个activity的用户界面的一部分例如, 一个新闻应用可以在屏幕左侧使用一个fragment来展示一个文章的列表,然后在屏幕右侧使用另一个fragment来展示一篇文章 – 2个fragment并排显示在相同的一个activity中,并且每一个fragment拥有它自己的一套生命周期回调方法,并且处理它们自己的用户输_android reader fragment

FFT of waveIn audio signals-程序员宅基地

文章浏览阅读2.8k次。FFT of waveIn audio signalsBy Aqiruse An article on using the Fast Fourier Transform on audio signals. IntroductionThe Fast Fourier Transform (FFT) allows users to view the spectrum content of _fft of wavein audio signals

随便推点

Awesome Mac:收集的非常全面好用的Mac应用程序、软件以及工具_awesomemac-程序员宅基地

文章浏览阅读5.9k次。https://jaywcjlove.github.io/awesome-mac/ 这个仓库主要是收集非常好用的Mac应用程序、软件以及工具,主要面向开发者和设计师。有这个想法是因为我最近发了一篇较为火爆的涨粉儿微信公众号文章《工具武装的前端开发工程师》,于是建了这么一个仓库,持续更新作为补充,搜集更多好用的软件工具。请Star、Pull Request或者使劲搓它 issu_awesomemac

java前端技术---jquery基础详解_简介java中jquery技术-程序员宅基地

文章浏览阅读616次。一.jquery简介 jQuery是一个快速的,简洁的javaScript库,使用户能更方便地处理HTML documents、events、实现动画效果,并且方便地为网站提供AJAX交互 jQuery 的功能概括1、html 的元素选取2、html的元素操作3、html dom遍历和修改4、js特效和动画效果5、css操作6、html事件操作7、ajax_简介java中jquery技术

Ant Design Table换滚动条的样式_ant design ::-webkit-scrollbar-corner-程序员宅基地

文章浏览阅读1.6w次,点赞5次,收藏19次。我修改的是表格的固定列滚动而产生的滚动条引用Table的组件的css文件中加入下面的样式:.ant-table-body{ &amp;amp;::-webkit-scrollbar { height: 5px; } &amp;amp;::-webkit-scrollbar-thumb { border-radius: 5px; -webkit-box..._ant design ::-webkit-scrollbar-corner

javaWeb毕设分享 健身俱乐部会员管理系统【源码+论文】-程序员宅基地

文章浏览阅读269次。基于JSP的健身俱乐部会员管理系统项目分享:见文末!

论文开题报告怎么写?_开题报告研究难点-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏15次。同学们,是不是又到了一年一度写开题报告的时候呀?是不是还在为不知道论文的开题报告怎么写而苦恼?Take it easy!我带着倾尽我所有开题报告写作经验总结出来的最强保姆级开题报告解说来啦,一定让你脱胎换骨,顺利拿下开题报告这个高塔,你确定还不赶快点赞收藏学起来吗?_开题报告研究难点

原生JS 与 VUE获取父级、子级、兄弟节点的方法 及一些DOM对象的获取_获取子节点的路径 vue-程序员宅基地

文章浏览阅读6k次,点赞4次,收藏17次。原生先获取对象var a = document.getElementById("dom");vue先添加ref <div class="" ref="divBox">获取对象let a = this.$refs.divBox获取父、子、兄弟节点方法var b = a.childNodes; 获取a的全部子节点 var c = a.parentNode; 获取a的父节点var d = a.nextSbiling; 获取a的下一个兄弟节点 var e = a.previ_获取子节点的路径 vue