excel数组和查找and引用函数

数组

数组的计算,就是获得一个值,这个值是0 还是 1,这就是数组运算的关键所在
数的组合
是有序的元素序列, 组成数组的个个变量称为数组的元素,
可以理解为有着行.列标识并有着尺寸特征的集合,一个单元格的数据就可以是一个数组,即单元素数组;单行数据或者单列数据,是一维数组, 多行多列数据是多维数组,

特点

1.所有的数组,都能在一定连续单元格区域表示出来’
2.数组的尺寸由构成数组元素的个数来确定
3.同一纬度的数组,要注意尺寸特征,同意数组中,不存在尺寸不同的行或者列
4.在编辑栏可以使用F9来查看数组的运算结果

分类

一维数组:一行或者一列的数组
二维数组:多行或多列的数组

创建

一维行数组:选中对应长度,然后输入,使用逗号间隔然后 ctrl + shift +enter 不能直接回车
​ ={1,2,3,4,5}
一维列数组 : 选中对应长度,然后输入,使用分号间隔然后 ctrl + shift +enter 不能直接回车
​ ={1;2;3;4;5}
多行多列就这样:
​ ={1,2,3 ; 4,5,6 ; 7,8,9}
如果选中了五个单元格,只给了四个值,那么第五个单元格会报错 #N/A
(填充不够的数据,就报错)
如果选中了四个单元格,给了五个值,那么单元格只会输出前四个值
(填充的数据大于选中的数据则正常填充)

使用

1.1数组的计算

or的时候选择+ ,, and 的时候选择 乘法

一维数组乘以一维数组
在单元格内输入 =第一列(行)数组X第二列(行)数组,然后按ctrl + shift +enter
一维数组乘以二维数组
第一列(行)数组 X 第二个多列(多行)数组 然后按 ctrl + shift +enter
多维X多维 也一样

1.2公式产生数组

列子1 :在一个表格中,如果大于0 ,就显示大于0 的数,否则显示0
普通方法 =IF(目标值>0 , 目标值 , 0) 如果目标值大于0 ,就输出目标值,不然就输出0
用数组的方法 可以通过逻辑判断数据,如果是TURE ,那么就代表是一,不然就代表是0,

列子2 : 计算1到10的自然数求和
row() 输出的是当前的行号
column() 输出的是当前的列号
=SUM( COLUMN (选中第一列到第十列 ))
按ctrl + shift + enter 就会输出1-10的求和

1.3BA列数据之差的均值

=SUM(选中A列 - 选中B列) 再按ctrl + shif +enter
只要是对数组操作的,就一定是 c + s + e
加减乘除都可以

1.4计算正数之和

方法一 : =SUM( if 目标单元格 > 0 , 目标单元格 , 0) 用这个方法判断正负
​ 然后使用alter + = 来计算正数的和
方法二 : 算中和目标数组一样规格的空白单元格 (其实只需要选中一个单元格就够了…),输入
​ =SUM( (目标数组 > 0)* 目标数组 )
​ 这个方法主要就是利用逻辑值

1.5判断身份证长度是否正确

普通方法 :
​ 首先使用LEN(目标单元格) 可以获取目标的单元格的长度
​ 然后ctrl + e 快速填充,就可以获取每一个单元格的长度
​ 组合在一起就是 OR(LEN(目标单元格) = 15,LEN(目标单元格) = 18) 然后就会返回 ture或者false
用数组:
​ ={len(目标单元格数组) = 15 + len(目标单元格数组2) = 18}
​ 结果输出的 不是0 就是 1
​ or 就选择 + and 就选择乘
​ 但是0和1 不是我们要的结果
​ 最后的结果为
​ ={IF(len(目标单元格数组) = 15) + (len(目标单元格数组2) = 18),“ture” ,“false”}
用数组常量:
​ =OR(len(目标单元格) = {15 , 18}) 值要么是15 要么是18

1.6多条件求和

求第一车间男职工的工资总和
普通方法 :
​ =SUMIFS(求和范围 , 判断范围1 , “第一车间” , 判断范围2 , “男”) 然后回车
用数组:
​ 条件and 就用X
​ =SUM{(目标数组一 = “第一车间”) X(目标数组二 = “男”) X 工资数组}
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=88&spm_id_from=pageDriver

1.7判断男女是否可以退休

普通方法 :
​ or(AND(目标一=“男” 年龄1>=65), AND(目标二 = “女” , 年龄2 >=60))
​ 男性,同时年龄>=65的,或者女的,年龄大于等于60 的,
​ IF(or(AND(目标一=“男”, 年龄1>=65), AND(目标二 = “女” , 年龄2 >=60)),“退 休”, “撸起袖子继续干” )
数组方法 :
​ =IF((性别数组 = “男”)X(年龄数组>65) + (性别数组=“女”) X (年龄数组>60) ,“退休” , “撸起袖子继续干”)

1.8 是否通过

普通方法 :
​ =IF(AND(目标1=“通过”,目标2=“通过”,目标3=“通过”,目标4=“通过”),“通过” , “未通 过”)
数组方法 : and + 数组
​ =IF(AND (目标数组行=“通过”),“通过”,“未通过”) 这一行中任意列都是通过,才通过
​ 使用ctrl + shif +enter
数组方法 :
​ =IF((目标数组1=“通过”) X (目标数组2=“通过”) X (目标数组3=“通过”) X (目标数组4=“通过”),“通过” , “未通过”)
​ 使用c+s+e

1.9数组SUMPRODUCT

统计三天同品牌之和
视频中的普通用法为 :
​ =SUM((A$2:A$12=G2) X B$2:D$12)
视频中使用函数为 :
​ =SUMPRODUCT((A$2:A$12=G10)*B$2:D$12)
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=91&spm_id_from=pageDriver

产量大于100或者小于110的合计
=SUM((目标数组 X ((目标数组 < 100) + (目标数组 > 110))))
((目标数组 < 100) + (目标数组 > 110))这一块 不是0就是1 不可能为2
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=92&spm_id_from=pageDriver

查找与引用函数

函数 介绍
VLOOKUP() 垂直方向查找(重要)
OFFSET() 计算偏移量(重要)
MATCH() 查找位置
INDEX() 查找数据
ROW() 引用行的数据
COLUMN() 引用列的数据
INDIRECT() 文本字符串指定的引用
HLOOKUP() 水平方向查找(自学)
Choose() 索引值指定参数列表中的数值。(自学)
Find() 一个字符串在另一个字符串的起始位置(自学)

一些下意行为:
​ 1.从某一个部位提取值放到一个地方,第一方应就是OFFset ,有条件就是VLOOKUP,第二反应 就是index

1.VLOOKUP函数动态图解模型

特点: 1.以查找值为第一列
​ 2.只能支持正向查找
通过条件去查询某个数据的时候,一定要想到VLOOKUP
有些东西用文字表达不出来,需要看一遍视屏
语法:VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])。
​ VLOOKUP(查找值,查找范围,查找第几列,精确匹配或者近似匹配)
​ VLOOKUP ( E16 , F14:F19 , 2 , FALSE ) 视屏中的案列
就会在范围F14:F19查找条件为E16的那一行,然后找到第2列,使用的是精确查找
这里的第几列,是从选中的E16开始数的,E16所在的列就是第一列!!!

参数 简单说明 输入数据类型
lookup_value 要查找的值 数值,引用或文本字符串
table_array 要查找的区域 数据表区域
col_index_num 返回数据在查找区域的第几列数 正整数
range_lookup 精确匹配/近似匹配 FALSE(或0)/TRUE(或1或不填)
  > 要查找的区域应该始终位于所在区域的第一列,这样 VLOOKUP 才能正常工作
  > 知识点:要查找的值必须是选中范围首列

https://www.bilibili.com/video/BV1Fy4y1z7DH?p=93&spm_id_from=pageDriver

案例:合并两个成绩表格
所用的代码为 :
=VLOOKUP( B2 , H$22:I122 , 2 , FALSE) 注意要锁定范围,不要使用相对引用,要用绝对引用
=VLOOKUP(查找姓名列 , 查找的范围为第二个表格的成绩和名字的多维数组 , 列数是第二列)
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=94&spm_id_from=pageDriver

1.2.员工档案表的操作

给了身份证号码,入职时间

  1. 出生日期
    =MID(目标列 , 7 , 8) 从第七个开始,一共显示八个 输出19800327
    格式化 =–TEXT(MID(目标列 , 7 , 8) ,"##-##-##" ) 1980年3月27日
    MID 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。
  2. 年龄
    =YEAR(NOW()) - YEAR(出生日期) 然后输出一个时间 ,吧这个时间改成常规
  3. 工龄(月)
    (当前的年份- 入职时间的年份)X12 + 现在的月份 - 入职时间的月份
    (=YEAR(NOW()) - YEAR(出生日期))X12 + (MONTH(NOW()) - MONTH(入职时间) )
    (MONTH(NOW()) 现在的月份是计算的从1900年到现在的月份
  4. 省份编号
    =LEFT(身份证所在的列 , 2) 拿到了身份证的最左边的两列
  5. 所属的身份
    还有一张省份编号对应的表 ,拿得到省份证前两位,就可以匹配上具体的省份了
    =VLOOKUP( LEFT(身份证所在的列 , 2) ,全国地区表! A$1:B5944 , 2,FALSE) 注意锁上
    =VLOOKUP( LEFT(身份证所在的列 , 2) ,全国地区表! 选中整个表格 , 全国地区表的第二列 ,FALSE)
    在编辑栏夸表格输入的时候,只要编辑输入框就好,千万不要点击多余的东西,除非这个东西是需 要使用的
    https://www.bilibili.com/video/BV1Fy4y1z7DH?p=95&spm_id_from=pageDriver

2.OFFSET函数

使用方法为 c+s+e
翻译为中文就是偏移的意思
使用前要选定要复制的单元格大小,不然就默认为只选中了一个单元格
作用:提取单元格的值,或者目标区域的值
​ 已制定的引用为参照系,通过给定偏移量得到新的引用,返回的引用可以为一个单元格或者单元 格区域,并可以指定返回的行数或列数
语法:OFFSET(reference, rows, cols, [height], [width])
​ Offset(参照单元格,行偏移量,列偏移量,返回几行,返回几列)
​ offset(基点 , 行偏 , 列偏移 , 行高, 列宽 )
​ 注意行高, 列宽 可以省略
​ 注意行高列宽,可以和原来的数据表格不一样,多的会补全为0
​ 使用c + s + e 运行
参数:
​ 5个参数为: 作为基准的单元格 , 向下移动X格 , 向右移动y格 , 返回单元格区域n行, 返 回单元格区域z行
​ 1.Reference 必需。 要作为偏移基准的参照。 引用必须引用单元格或相邻单元 格区域。否则, OFFSET 返回 #VALUE! 。
2.Rows 必需。 需要左上角单元格引用的向上或向下行数。 使用 5 作为 rows 参数,可指定引用中的左上角单元格为引用下方的 5 行。 Rows 可为正数(这意味着在起 始引用的下方)或负数(这意味着在起始引用的上方)。
​ 3.Cols 必需。 需要结果的左上角单元格引用的从左到右的列数。 使用 5 作为 cols 参数,可指定引用中的左上角单元格为引用右方的 5 列。 Cols 可为正数(这意味着 在起始引用的右侧)或负数(这意味着在起始引用的左侧)。
4.高度 可选。 需要返回的引用的行高。 Height 必须为正数。
5.宽度 可选。 需要返回的引用的列宽。 Width 必须为正数。

备注:

  1. 如果 “行” 和 “cols 偏移” 引用覆盖了工作表的边缘, 则 offset 返回 #REF! 。
  2. 如果省略 height 或 width,则假设其高度或宽度与 reference 相同。
  3. OFFSET 实际上并不移动任何单元格或更改选定区域;它只是返回一个引用。 OFFSET 可以 与任何期待引用参数的函数一起使用。 例如,公式 SUM(OFFSET(C2,1,2,3,1)) 可计算3行 1 列区域(即单元格 C2 下方的 1 行和右侧的 2 列的 3 行 1 列区域)的总值

正常使用 :
​ =OFFSET(A1 , 5 , 2 , 3 , 3 )
​ 以A1为基准,往下5个单元格,往右边2个单元格, 复制3X3的表格
可以只偏移一列,而行不偏移
​ 比如=offset(A1 , 1 , 8 , 7 , 1)
​ 以A1为基准,往下1个单元格,往右边8个单元格, 复制7X1的表格
注意
1、通常情况下,输入正数来控制产生引用的行数和列数,偏移方向为向下取行数或向右取得列数。
2、值得提醒的是,EXCEL支持用户在行数_height和列数_width参数中输入负数来产生引用。其中:负行数向上取行数,负列数向左取列数。
3. 无论基点选中多少个, 都只和左上角的那个点相关
练习:
为啥我就是弄不出来, =OFFSET(基点 , 往下移动几格 , 往右移动几格 , 复制几行 , 复制几列 )
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=98&spm_id_from=pageDriver

3.MATCH理解

是给定一个值,然后查找这个值在某范围内的位置 ,输出的数字代表第几个位置
可以查行 也可以查列 但是只能查询单行单列
语法:MATCH(lookup_value, lookup_array, [match_type])
​ MATCH(查找值, 查找区域, 查找方式)

参数:
lookup_value必需。 要在 lookup_array 中匹配的值。 例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。
lookup_value参数可以为值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。
lookup_array必需。 要搜索的单元格区域。
match_type可选。 数字 -1、0 或 1。 match_type 参数指定 Excel 如何将 lookup_valuelookup_array 中的值匹配。 此参数的默认值为 1。
​ 下表介绍该函数如何根据 match_type 参数的设置查找值。
​ - 0:任何排序
​ - 1:升序
​ - -1:降序

=MATCH(C8 , C2:C14 , 0)
MATCH(查找值, 查找区域,查找方式)
=MATCH(100 , C2:C14 , 1|0|-1)
此时最后的1表示查找小于或者等于100的最大值,但是查询区域必须升序排列
-1为大于或者等于100的最大值,但是查询区域必须降序排列
​ 输出的还是地址

用match查询相同个数
match忽略大小写
判断数组1中的数据是否在数组2中存在,不考虑位置,不考虑大小写
=COUNT(MATCH(范围1 , 范围2 , 0)) 运行的是数组,所以用c + s+ e
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=100&spm_id_from=pageDriver

3.index

match是根据数值找下标, index是根据下标找数值
语法:INDEX(array, row_num, [column_num])
​ INDEX(选择范围,行,列)
在外面加一个sum ,就可以求范围内的数据的和啦
参数:
数组 必需。 单元格区域或数组常量。
如果数组只包含一行或一列,则相应的 row_num 或 column_num 参数是可选的。
如果数组具有多行和多列,并且仅使用 row_num 或 column_num,则 INDEX 返回数 组中整个行或列的数组。
row_num 必需,除非存在 column_num。 选择数组中的某行,函数从该行返回数值。 如 果省略 row_num,则需要 column_num。
column_num 可选。 选择数组中的某列,函数从该列返回数值。 如果省略 column_num,则需要 row_num。

这个函数在使用的时候不会区分行,列 ,只要数第几个就可以了 , 不是数组的数法

3.1累计数据

这道题是真的看不懂
就是累加,但是每一次加的值是随机的
方法一: = SUM($B 2 : B 2 ) 方 法 二 : = S U M ( O F F S E T ( 2 : B2) 方法二: = SUM( OFFSET( 2:B2):=SUM(OFFSET(B 1 , 1 , 0 , D A Y ( A 2 ) , 1 ) ) 方 法 三 : = S U M ( O F F S E T ( 1, 1, 0, DAY(A2),1 )) 方法三: = SUM( OFFSET( 1,1,0,DAY(A2),1)):=SUM(OFFSET(B 1 , 1 , 0 , R O W ( A 1 ) , 1 ) ) 方 法 四 : = S U M ( O F F S E T ( 1, 1, 0, ROW(A1),1 )) 方法四: = SUM( OFFSET( 1,1,0,ROW(A1),1)):=SUM(OFFSET(B 1 , 1 , 0 , C O U N T ( 1, 1, 0, COUNT( 1,1,0,COUNT(B$2:B2 :B2), 1 ))
​ count也是计数
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=102&spm_id_from=pageDriver

3.2 提取表格中的姓名

这个要找规律哦
第一个名字: OFFSET(B1 , 1 , 0 , 1 , 1)
第二个名字: OFFSET(B1 , 3 , 0 , 1 , 1)
第三个名字: OFFSET(B1 , 5 , 0 , 1 , 1)
第四个名字: OFFSET(B1 , 7 , 0 , 1 , 1)
所以最后这种方法为 :
OFFSET(B$1 , ROW()*2-3,0,1,1)

方案1:=OFFSET($B$1,ROW() X 2-3,0)
方案2:=INDEX($B$1:$B$12,ROW() X 2-2)
方案3:=INDEX($B$2:$B$12,ROW() X 2-3)
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=103&spm_id_from=pageDriver

4.INDIRECT

语法:INDIRECT(ref_text, [a1])
​ INDIRECT(引用区域,引用格式)

参数:

  • Ref_text 必需。 对包含 A1 样式的引用、R1C1 样式的引用、定义为引用的名称或对单元格的引用作为文本字符串的单元格的引用。 如果 ref_text 不是有效的单元格引用, 则间接返回 #REF!
  • 如果 ref_text 引用另一个工作簿 (外部引用), 则必须打开另一个工作簿。 如果源工作簿未打开, 则间接返回 #REF! 。
    注意 Excel Web App 中不支持外部引用。
  • 如果 ref_text 引用的单元格区域超出1048576的行限制或列限制 16384 (XFD), 则间接返回 #REF! 错误。
    注意 此行为不同于早于Microsoft Office Excel 2007 的 Excel 版本, 这将忽略超过的限制并返回值。
  • A1 可选。 一个逻辑值,用于指定包含在单元格 ref_text 中的引用的类型。
    • 如果 a1 为 TRUE 或省略,ref_text 被解释为 A1-样式的引用。
    • 如果 a1 为 FALSE,则将 ref_text 解释为 R1C1 样式的引用

4.1行政区划分

省直辖市自治区和关联市/区–下拉选框格式
方案:
(1)公式 > 名称管理器 > 新建 > 名称 输入 省直辖市自治区 > 再点击 引用位置 (选中省直辖市) > 确定
(2)选中所有数据的前几行 > 公式 > 根据所选内容创建 > 只勾选首行 > 确定
(3)在一个空白单元格 > 数据 > 数据验证 > 设置 > 允许(A)中选择 序列 > 来源 中输入 =省直辖市自治区 > 确定 就引用了身份
(4)在右边的空单元格中 > 数据 > 数据验证 >设置 > 允许(A)中选择 序列 > 来源 中输入 =indirect($A$2) > 确定
$A$2为第三步选中的空白单元格

你可能感兴趣的:(excel)