【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

智能推荐

Nginx 入门到实战,新手必懂 !-程序员宅基地

文章浏览阅读138次。一、环境服务器版本:CentOS 7.2,为了保证学习阶段不遇到奇怪的事情,请保证以下四点(大神选择性无视)确认系统网络确认yum可用确认关闭iptables确认停用selinux#查看i..._nginx入门与实战 py鱼

iov_iter操作_iov_iter_init用来初始化iov_iter-程序员宅基地

文章浏览阅读1.5k次。iovec_iter操作由来iov_iteriov_itertypeiov_offsetcount使用iov_iter由来iov_iter它是由Nick Piggin于2007 年首次为2.6.24内核添加的。但是在过去的一年中,人们一直在努力扩展此API,并在内核的更多部分中使用它。例如,在3.19的合并中,它将看到它进入网络子系统的第一步。内核中最常见的任务之一是处理用户空间提供的数据缓冲区,可能是分成几个块。也许并不奇怪,这是内核代码经常出错的任务,从而导致错误以及可能的安全问题。内核包含一个原_iov_iter_init用来初始化iov_iter

新版手机离线地图GPS定位程序_gps 离线地图-程序员宅基地

文章浏览阅读4.5k次。新版手机离线地图GPS定位程序 新版手机离线地图GPS定位程序是运行WindowsMobile操作系统手机上的一款应用程序,它的作用是为手机用户提供离线地图服务。也就是说不需要网络,不需要手机信号,不需要任何流量和费用,只要你的手机有电,就可以获得地图服务以及GPS定位服务。你可以在手机上看到你的位置以及100分钟之内的运动轨迹。 新版程序是在老老版本的基础上,为了更加实用,更稳定,更方便使用而进行了一系列的改进和提高_gps 离线地图

npm包安装/升级,npm i --save和--save-dev区别,dependencies和devDependencies区别,package.json文件中版本号含义_npm 升级 devdependencies-程序员宅基地

文章浏览阅读1.5k次。npm包安装/升级,npm i --save和–save-dev区别,dependencies和devDependencies区别,package.json文件中版本号含义目录npm包安装/升级,npm i --save和--save-dev区别,dependencies和devDependencies区别,package.json文件中版本号含义npm包安装/升级package.json中安装依赖分类npm i --save和 npm i --save-dev区别package.json 文件中版本号含_npm 升级 devdependencies

TypeScript tsc 不是内部或外部命令,也不是可运行的程序或批处理文件解决办法_get-executionpolicy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。-程序员宅基地

文章浏览阅读531次。TypeScript tsc 不是内部或外部命令,也不是可运行的程序或批处理文件解决办法_get-executionpolicy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

摆脱焦虑的方法_把自己情绪不当回事,情绪是假的,情绪容易形成回路,就是佛教的妄念,当妄念一旦-程序员宅基地

文章浏览阅读207次。 断除烦恼的方法,要让自己的情绪不当回事,情绪是假的。抑郁症、强迫症等各种症状的病人的脑子里有一些回路,这些回路建立以后,这些回路就是佛教里的“妄念”,当妄念一旦产生,越想它,它的变形越厉害,最后它产生的想法,和真实世界是完全不靠谱的。 就像一个人失恋了想要自杀一样,可能半年之后,发现自己当时怎么那么可笑,那就是在失恋那个阶段,回路建立了。..._把自己情绪不当回事,情绪是假的,情绪容易形成回路,就是佛教的妄念,当妄念一旦

随便推点

eggjs 报错socket is closed by other side while there were still unhandled data in the解决方案-程序员宅基地

文章浏览阅读359次。其实很简单啊,你node版本高了。之前博主用的12.18.1 然后nvm切换了node版本到18.12.1 是能跑,也能读,debug下突然就不行了,你懂我的意思的话,就知道怎么解决了,博主公众号在下面,你可以随便点个文章进去。可以加到博主的wx群。这个报错,完就不能热更新了,是不是很突然,明明代码昨天还能跑今天就不可以了。_socket is closed by other side while there were still unhandled data in the

mysql学习3:mysql之my.cnf详解-程序员宅基地

文章浏览阅读52次。mysql之my.cnf详解本文转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html以下是 my.cnf 配置文件参数解释:#*** client options 相关选项 ***##以下选项会被MySQL客户端应用读取。注意只有MySQL附带的客户端应用程序保证可以读取这段内容。如果你想你自己的MySQL应用程序获取..._mysql 写库模式 cnf 1,2,3

华为WLAN3.2漫游特性_华为机 wlan 产品可实现了 ac 内三层漫游-程序员宅基地

文章浏览阅读269次。3.2.1概念介绍3.2.2基本原理介绍信号强度 -75db丢包3.2.3漫游应用场景_华为机 wlan 产品可实现了 ac 内三层漫游

RocketMQ-HA安全问题_rocketmq安全运维基线-程序员宅基地

文章浏览阅读505次。broker的master-slave机制能够被利用,只要知道了master的ip和port,就可以伪装成slave向master发起消息同步BrokerStartup#createBrokerController messageStoreConfig.setHaListenPort(nettyServerConfig.getListenPort() + 1);上面的listenPort就是在broker文件中配置的,默认的ha通信端口,就是listenPort+1亲测可以直接创建soc._rocketmq安全运维基线

python列表练习题_python列表题目-程序员宅基地

文章浏览阅读684次,点赞2次,收藏3次。母亲节,晓虎和晓波兄弟俩想要买一只宠物狗送给母亲,他们来到萌宠之家,询问店家所有宠物狗的编号、名称、价格等相关信息,但是他们觉得这样很不方便,正在学习编程的兄弟俩帮店家编写了一个宠物狗信息系统,记录了所有宠物狗的信息,可以快速查询所有狗狗的价格。假设列表list1=[‘安徽’,’江苏’,’浙江’,’广西’,’山东’,’山西’,’湖南’,’湖北’],写出程序的运行结果。4、编写一个程序,用于统计字符串”ab2b3n5n2n67mm4n2”中字符n出现的次数,并把列表中的字符串中的字符进行倒排。_python列表题目

mysql 段错误 (core dumped)-程序员宅基地

文章浏览阅读273次。一直使用好好的mysql命令,突然今天抽风,无论使用任何mysql选项都报“段错误(coredumped)”,以为是mysqld程序出问题了,所以我尝试重启,因为我的环境上是多实例,用了mysqld_multi来管理,没想到一敲mysqld_multi命令也报错:shell >/usr/local/mysql/bin/mysqld_multistop3306-3308m..._mysql段错误(吐核)

推荐文章

热门文章

相关标签