跳至主要內容

公式

Caryam...大约 7 分钟

前言

excel支持的公式实在是太多了,本文章只介绍本人常用的excel公式,其他公式请查阅官方文档open in new window。由于网络原因,微软文档的视频可能无法观看,也可以查看excel-easy文档open in new window

相对引用和绝对引用

我们在使用公式时,常常需要引用其他单元格的值,而不是固定的数字,所以理解公式中单元格的引用是很重要的。引用单元格的值很简单,在公式中使用单元格的名字就可以了,比如A1引用A列第一行的单元格的值。

那为什么又会存在相对引用和绝对引用呢?
这是因为excel具有 “批量填充” 功能,软件会对我们输入的公式进行一定的推断,复用在相似单元格中。比如下图,在多行间复用同一公式。
批量填充
我们可以看到填充后每行C列单元格的公式有规律的变换引用的单元格以复用第一行的公式。这种填充后由软件推断单元格位置变换的引用方式称为相对引用。

很多时候,相对引用的方式都是我们想要的,但却不是总是这样的。比如下图,批量计算给定人民币能够兑换的港币数值,使用相对引用的方式得到错误结果。
相对引用导致错误
我们希望公式填充时,应该保证B1不变,只要将B1改为$B$1即可。
绝对应用示例

解释

  1. $符号表示绝对引用,是不会在填充时进行位置推断变化的。这个符号可以只用于字母前面表示列号不变,行号改变,比如$B1;也可以只用于行号,或者行列都使用。
  2. 引用一整列可以使用列号:列号的方式,比如A:A引用A列整列。行引用类似,比如1:1引用第一行。

Range引用

上面说到的都是单元格Cell的引用,如果要引用一个范围Range只需要给定矩形范围的左上角和右下角单元格,并在中间添加英文冒号:即可。如下图,框起来部分就是A1:D9表示的范围。
Range引用

工作表和工作簿的引用

参考文章:How to Reference Another Sheet or Workbook in Excel (with Examples)open in new window

引用其他工作表使用SheetName!Cell/Range的格式,比如引用工作表Sheet2的A1单元格:

Sheet2!A1

引用已经打开的其他工作簿只要在上面的基础上添加[WorkbookName.xlsx],引用Workbook2.xlsx就是:

[Workbook2.xlsx]Sheet2!$A$1

而引用未打开的单元格就要加上文件路径:

'C:\\path\to\file\[Workbook2.xlsx]Sheet2'!$A$1

注意

  1. 如果名称存在空格或其他非字母、数字的字符(@, !, #, -,etc.),需要添加单引号,比如'Sheet-2'!A1
  2. 引用其他工作簿时只能使用绝对引用。
  3. 在本工作簿引用其他工作表,在工作表名字更改时,涉及的公式均会自适应更改;而跨工作簿引用,则不会自适应更改,需要手动更改。

名称定义

给部分公式添加别名,方便复用或者精简公式。比如下面的公式:

'Sheet2'!$A$1:$D$9

实在是冗长,我们给$A$1:$D$9取个别名,比如叫做Range1 那么这个单元格表达式就可以变成:

'Sheet2'!Range1

具体的名称定义操作是在公式选项卡中点击定义名称按钮,然后在编辑器输入相应信息:
名称定义
而该按钮旁边的名称管理器可以实现对别名的管理,包括删除、修改等。

在别名很多时,我们在输入公式时可以按F3调出名称选择器。
名称选择器

四则运算

excel支持所有四则运算符号,分别用+-*/表示加减乘除,同时支持括号()。启用公式运算时,要先在单元格中输入一个等号=

=5+(49/7-2*3)

常用函数

函数不再进行不必要的说明,仅仅给出使用示例。示例双斜杠后面表示注释说明,不是公式的一部分。

计算函数

求和函数SUM

=SUM(A1:A9) // 求和A1:A9区域的单元格数值

数值单元格计数函数COUNT

=COUNT(A1:A9) // 计算A1:A9区域的数值单元格个数

非空单元格计数函数COUNTA

=COUNTA(A1:A9) // 计算A1:A9区域的非空单元格个数

可见单元格计算函数SUBTOTAL

在使用筛选的情况下,直接使用求和等函数会得到错误的结果。如果只想让可见单元格参与计算,就需要用到SUBTOTAL

=SUBTOTAL(9, A1:A9) // 求和A1:A9区域的可见单元格数值

公式的9SUM函数的标识,仅仅表示使用SUM来计算可见单元格,没有其他特别含义。你可以应用其他函数,只要给定对象的数字标识就可以。不用担心记不住数字标识,输入公式时,软件会给予提示。

偏移引用函数OFFSET

该函数用于获取相对于某单元格行列偏移后的范围引用。

=OFFSET(A1, 2, 0, 3, 1) // 获取相对于A1单元格行偏移为2个单元格、列偏移量为0的、高为3个单元格长度、宽为1个单元格长度的范围引用

文本转引用函数INDIRECT

该函数可以将文本转换成其描述的范围的引用,比如:

=INDIRECT("A1") // 获取A1单元格引用

特别地,该函数对命名范围named range也是适用的。

文本拼接函数CONCATENATE

该函数用于拼接文本字符串,作用与&相同。
以下示例表示连接A1与B1单元格

= CONCATENATE("A1文本:", A1, CHAR(10), "B1文本:", B1)
  1. 以上使用了公式CONCATENATE进行字符串的拼接,在文本不多的情况下,也可以直接使用&操作符连接字符串。
  2. CHAR(10)表示换行符
  3. 最终单元格结果可能没有换行,这时需要点击开始选项卡的换行按钮

文本分割函数TEXTSPLIT

函数定义:

= TEXTSPLIT("拆分字符串/单元格","按列分割分隔符<如不使用该模式则该项不用赋值>","按行分割分割符<同上>",True/False<是否忽略空白项>, 0/1<是否区分大小写>)

示例:
a-b-c-d-e-f字符串按行拆分:

=TEXTSPLIT("a-b-c-d-e-f`",,"-")

结果:
result

匹配函数VLOOKUP

=VLOOKUP(A1,Sheet2!A1:D9,2,FALSE)

这个函数的意思是用A1去匹配工作表Sheet2A1:D9范围内的第一列。
当在该列找到与这个A1单元格内容匹配的行,就把改行第2列对应单元格内容返回。
而False表示匹配的方式是精确匹配,就是数值完全相同才算匹配成功。

注意

  1. 公式中范围的第一列必须是用于匹配值的列。
  2. 范围必须包括需要返回的列。

匹配函数xlookup

vlookup总是默认使用参考区域的第一列和查找值匹配,这不总是我们想要的。通过xlookup,我们可以灵活地指定参考列。看个例子:

= XLOOKUP(A1, refsheet!C:C, refsheet!A:A, "", FALSE)

这个公式表示使用refsheet的第C列作为参考列,而refsheet的第A列作为取值列,这样就打破了vlookup取值列不能在参考列之前的僵局。

补充:这里没有使用绝对引用是因为使用了整列引用,没有行号改变的问题。

上次编辑于:
贡献者: cary-mao
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7