当前位置:首页|资讯

Excel函数基础

作者:信雅财税发布时间:2024-09-21

函数,注定要伴随会计人员的一生,从今天开始相识吧。

函数的定义

在数学中,函数是一个将一个集合中的元素关联到另一个集合中的元素的规则。更正式地讲,如果 A 和 B 是两个非空集合,那么从 A 到 B 的一个函数 f 是一个定义了如下关系的规则:对于 A 中的每一个元素 x,根据规则 f,都有 B 中唯一确定的一个元素 y 与之对应。我们通常写作 y=f(x),称 x 为自变量,y 为因变量。

在编程语言中,函数(Function)是一种可重复使用的代码块,它执行特定的任务并可能返回一个结果。函数的设计目的是为了提高代码的复用性和模块化,使得程序更容易理解和维护。

在Microsoft Excel中,函数是一组预定义的公式,它们可以执行特定的计算或操作,从而简化用户的工作流程。Excel提供了大量的内置函数,涵盖了从简单的数学运算到复杂的统计分析等多个方面。使用Excel函数可以让用户快速完成数据处理工作,而无需手动编写复杂的公式。在Excel中,会涉及以下四种函数:

在Excel工作表中使用的函数称为工作表函数,日常工作中接触到的大部分函数都属于这类,如VLOOKUP,SUMIF,FILTER,INDEX等等。

在PowerQuery中,“M函数”指的是使用M语言编写的函数。M语言是一种用于数据建模和转换的语言,主要应用于Microsoft Power Query中,用于从各种数据源获取和转换数据。

DAX(Data Analysis Expressions)是Microsoft开发的一种公式语言,专门用于Microsoft Power Pivot、Power BI、Excel 数据模型和SQL Server Analysis Services Tabular Model(SSAS Tabular)等商业智能(BI)工具中。DAX 提供了一种强大的方式来创建度量值、计算表格和执行复杂的数据分析。

在Visual Basic for Applications (VBA) 中,函数(Function)是一种子程序,它可以执行特定的操作并返回一个结果。VBA中的函数可以用于Excel、Access等Office应用程序中,以扩展这些应用程序的功能。函数可以接收输入参数,并且可以根据这些参数执行计算或其他操作,最终返回一个值。

为什么会计离不开函数

会计,是商业的语言,其两大职能之一的核算职能,即是将现实世界中发生的经济活动,以专门的方法加以记录,本质上属于一种数据处理工作,既然是处理数据,那就离不开函数,例如:

毛利率 = (销售收入 - 销售成本) / 销售收入

资产负债率 = 负债总额 / 资产总额

月末一次加权平均法发出存货成本 = (期初金额 + 本期入库金额) / (期初数量 + 本期入库数量)

这些计算都符合函数的数学定义,所以,即使不使用任何软件,会计人员也是每天都在和函数打交道。会计的另一大职能,监督职能,涉及的预算、预测、数据分析、绩效评定等,更加离不开函数。随着各类软件的发展,不论是使用Excel、VBA、还是PowerBI、Python,都涉及到函数的使用,因此,真正理解函数的本质,对会计人员而言至关重要。

函数的结构

Excel的函数以函数名开头,后面是一对小括号,括号中输入函数的参数,参数之间以逗号隔开,如下面的例子:

函数的意义

函数允许开发者将常用的操作封装成一个单独的代码块,这样就不需要在多个地方重复编写相同的代码。一旦函数被定义,就可以在程序的任何地方调用它,从而减少了代码冗余。

通过将代码分割成独立的、可管理的小块(函数),可以更容易地理解、测试和维护程序。每个函数负责完成一个具体的任务,这有助于降低整体系统的复杂度。

函数隐藏了实现细节,只暴露出必要的接口供其他部分使用。这种抽象能力让开发者能够关注更高层次的问题,而不是陷入具体的实现细节之中。

函数可以保护内部数据不受外部干扰。通过定义输入参数和返回值,函数可以控制对外部世界的交互,保证内部数据的安全性和一致性。

函数的运行原理

下面我们将通过示例,来讲解函数是如何运行的,通过理解函数的原理,能够更好的理解函数的意义。

首先,在Excel中虚构一些数据,并使用VLOOKUP函数,依次输入四个参数,返回结果,如下图:

在这个例子中,“班级表”中存储各班级班主任的信息,“花名册”表中存储每个学生的姓名、班级、性别、特长、考试分数,通过使用VLOOKUP函数,从“班级表”中引用班主任姓名至“班主任”列。

下面,我们通过VBA编写代码,实现和VLOOKUP一模一样的功能,请亲手操作一遍,但不必理解代码(Excel实际上是用C++开发的,但是这里为了方便大家操作使用VBA,原理是一样的,代码会有不同)。 

首先,在界面中依次点击“文件”选项卡,点击“选项”——“自定义功能区”——“开发工具”,保证“开发工具”是勾选状态。

之后,界面上会显示开发工具选项卡,点击“VisualBasic”,进入VBA编辑界面

右键点击“工程”区域空白处,“插入”——“模块”

在新建的模块中,粘贴下面的代码,这段代码实现了一个名字叫“VBA_VLookup”的自定义函数

Function VBA_VLookup(lookup_value As Variant, table_array As Range, col_index_num As Long, Optional range_lookup As Boolean = True) As Variant    Dim row As Range    Dim result As Variant    Dim found As Boolean    Dim closestRow As Range        ' 设置默认值为错误    VBA_VLookup = CVErr(xlErrNA)        ' 初始化找到的行变量    Set closestRow = Nothing        ' 遍历表格的第一列,寻找匹配项    For Each row In table_array.Columns(1).Cells        If Not range_lookup Then            ' 精确匹配            If row.Value = lookup_value Then                ' 找到了第一个匹配项                Set closestRow = row                Exit For            End If        Else            ' 近似匹配            If closestRow Is Nothing And row.Value >= lookup_value Then                ' 如果还没有找到任何行,并且当前行的值大于等于lookup_value,                ' 则标记当前行为最接近的行。                Set closestRow = row                Exit For            ElseIf row.Value < lookup_value Then                ' 如果当前行的值小于lookup_value,则更新最接近的行                Set closestRow = row            End If        End If    Next row        ' 如果找到了匹配行    If Not closestRow Is Nothing Then        ' 获取对应列的值        result = table_array.Cells(closestRow.row, col_index_num).Value        VBA_VLookup = result    End IfEnd Function

现在关闭VBA编辑界面,在之前的示例表中,使用刚才用VBA编写的“VBA_VLookup”函数

可以发现,用VBA代码自定义的函数,实现了和Excel内置的VLOOKUP函数一模一样的功能

同理,用其他编程语言,也可以这样实现,但是,内置函数的意义在于,你不需要去学编程,写出那一大堆代码,你只需要知道VLOOKUP的四个参数都是干什么的,这个函数能返回什么结果即可,在全世界的任何一台电脑的任何一个工作簿里,让任何一个人来操作,只要使用方法正确,就能得到相同的结果。这就是函数的意义:重用、模块化、抽象、封装。

函数的运行原理总结,请看下图:

使用函数

下面介绍如何在Excel中使用函数,首先,函数要在公式中使用,所以如果公式中仅有一个函数的话,要以等号开头;之后,选中需要函数返回值的单元格(如果返回值是一个数组,那么选中你需要该数组的第一个元素所在的位置),在编辑栏中输入函数,有以下三种方法。

在编辑栏中依次输入等号、函数名、括号、参数,即可完成,需要注意的是,如果参数是某单元格或某单元格组成的区域,那么可以在录入参数时使用鼠标左键进行选择,下面以VLOOKUP为例:

当然,由于这也是表格,所以还是可以结构化引用,如下图:

之后输入第三参数和第四参数,点击回车完成录入

当然,也可以把第一参数改为“班级”列,这样返回的结果是一个数组,就不需要把公式往下填充了

不想结构化引用的话,是这样的:

在输入函数名后,可以点击“CTRL+A”组合键,打开函数参数面板进行录入,如下图:

在“公式”选项卡中,可以插入函数,如下图:

选择后,会完成函数名和括号的输入,并弹出参数输入框。

函数帮助界面

在参数输入框中点击“有关该函数的帮助(H)”后,跳转至官方网站中该函数的帮助页面,如下图:

官方网站的帮助质量很高,值得一看!

函数嵌套

函数的参数可以是另一个函数返回的结果

在实际工作中,遇到的问题往往比较复杂,不是一个函数就能解决的,这个时候就需要多个函数配合使用,如果问题是制作一辆汽车,那数据就是组成汽车的各种材料和零件,函数就是焊接机器人、加工中心、喷漆房、总装线。

将一个复杂问题拆分成若干个简单问题,再使用适合的函数分别解决,从而解决掉复杂问题,这就是函数嵌套的意义。

下面举一个例子:

问题:求这三个区域的所有组合,比如刘备骑着赤兔拎着青龙偃月刀 

思路如下:

  1. 这道题本质上是求三个数组的笛卡尔积

  2. Excel求笛卡尔积最简单的方法是一个横向一维数组和一个竖向一维数组通过“&”符号连接

  3. 题中是三个数组,那么就先求其中两个的笛卡尔积,再用结果与第三个数组求笛卡尔积

思路确定后,实际操作如下:

  1. 先把名字转为横向一维数组,武器转为竖向一维数组

2. 求名字和武器的笛卡尔积

3. 把名字和武器的笛卡尔积转为横向一维数组,再和坐骑求笛卡尔积

4. 把最终的结果转为竖向一维数组


可以看出,通过嵌套,函数可以发挥出远超自身原本功能的威力,Excel高手的过人之处正是通过天马行空的想象力,将普通的函数组合使用,点石成金。

以下是一些经典的函数嵌套用法:

  • INDEX + MATCH ,指哪儿打哪儿的索引

  • SUMPRODUCT + FIND + ISNUMBER  ,模糊条件汇总求和

  • IF + AND/OR ,逻辑的经典用法

  • LAMBDA和她的小伙伴们,让Excel实现图灵完备

自定义函数

Excel的内置函数,约有五百余个,涉及财务、逻辑、文本、日期时间、查找引用、数学、统计等多个领域,但是,仍然会出现一个问题:内置函数解决不了问题,或者解决问题的公式太长。

这个时候,就需要自定义函数功能登场了,在LAMBDA函数问世之前,自定义函数需要通过VBA编写代码解决,比如上面用VBA实现的高仿VLOOKUP函数,这需要一定的学习成本。好在,LAMBDA问世了,这是Excel一次史诗级的更新,Excel从此图灵完备!

LAMBDA函数会在后续的文章中详细讲解,本次只简单介绍使用LAMBDA完成自定义函数。

VBA在Excel进阶篇中讲解,敬请期待。

名称是Excel的老牌功能,后续会有文章详细讲解,本文中,名称的意义在于和LAMBDA强强联合,实现自定义函数功能,因为函数需要:有!名!字!

首先,是LAMBDA的一般用法,如下图:

设定一个参数X,和一个计算表达式X * X,然后数字2传入参数X,返回了2的平方4 

是不是觉得毫无意义,像是脱那啥放那啥

但是,配合上名称,就完全不一样了!

点击“公式”选项卡——“名称管理器”——“新建”

为自定义函数起一个名字“平方”,然后在“引用位置”中,输入公式

接下来,去单元格中使用

也可以这样

现在我们尝试自定义一个复杂一些的函数:月末一次加权平均法存货发出成本

然后在进销存表中,使用自定义函数

如果你觉得这样还是脱那啥放那啥,请翻到上面仔细阅读函数的意义。

以上,就是函数基础的全部内容了,本篇文章偏重理论部分,之后更新的具体函数,会更加偏重实务,敬请期待!

end


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1