数组的计算,就是获得一个值,这个值是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
(填充不够的数据,就报错)
如果选中了四个单元格,给了五个值,那么单元格只会输出前四个值
(填充的数据大于选中的数据则正常填充)
or的时候选择+ ,, and 的时候选择 乘法
一维数组乘以一维数组
在单元格内输入 =第一列(行)数组X第二列(行)数组,然后按ctrl + shift +enter
一维数组乘以二维数组
第一列(行)数组 X 第二个多列(多行)数组 然后按 ctrl + shift +enter
多维X多维 也一样
列子1 :在一个表格中,如果大于0 ,就显示大于0 的数,否则显示0
普通方法 =IF(目标值>0 , 目标值 , 0) 如果目标值大于0 ,就输出目标值,不然就输出0
用数组的方法 可以通过逻辑判断数据,如果是TURE ,那么就代表是一,不然就代表是0,
列子2 : 计算1到10的自然数求和
row() 输出的是当前的行号
column() 输出的是当前的列号
=SUM( COLUMN (选中第一列到第十列 ))
按ctrl + shift + enter 就会输出1-10的求和
=SUM(选中A列 - 选中B列) 再按ctrl + shif +enter
只要是对数组操作的,就一定是 c + s + e
加减乘除都可以
方法一 : =SUM( if 目标单元格 > 0 , 目标单元格 , 0) 用这个方法判断正负
然后使用alter + = 来计算正数的和
方法二 : 算中和目标数组一样规格的空白单元格 (其实只需要选中一个单元格就够了…),输入
=SUM( (目标数组 > 0)* 目标数组 )
这个方法主要就是利用逻辑值
普通方法 :
首先使用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
求第一车间男职工的工资总和
普通方法 :
=SUMIFS(求和范围 , 判断范围1 , “第一车间” , 判断范围2 , “男”) 然后回车
用数组:
条件and 就用X
=SUM{(目标数组一 = “第一车间”) X(目标数组二 = “男”) X 工资数组}
https://www.bilibili.com/video/BV1Fy4y1z7DH?p=88&spm_id_from=pageDriver
普通方法 :
or(AND(目标一=“男” 年龄1>=65), AND(目标二 = “女” , 年龄2 >=60))
男性,同时年龄>=65的,或者女的,年龄大于等于60 的,
IF(or(AND(目标一=“男”, 年龄1>=65), AND(目标二 = “女” , 年龄2 >=60)),“退 休”, “撸起袖子继续干” )
数组方法 :
=IF((性别数组 = “男”)X(年龄数组>65) + (性别数组=“女”) X (年龄数组>60) ,“退休” , “撸起袖子继续干”)
普通方法 :
=IF(AND(目标1=“通过”,目标2=“通过”,目标3=“通过”,目标4=“通过”),“通过” , “未通 过”)
数组方法 : and + 数组
=IF(AND (目标数组行=“通过”),“通过”,“未通过”) 这一行中任意列都是通过,才通过
使用ctrl + shif +enter
数组方法 :
=IF((目标数组1=“通过”) X (目标数组2=“通过”) X (目标数组3=“通过”) X (目标数组4=“通过”),“通过” , “未通过”)
使用c+s+e
统计三天同品牌之和
视频中的普通用法为 :
=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.以查找值为第一列
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
给了身份证号码,入职时间
使用方法为 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 必须为正数。
备注:
正常使用 :
=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
是给定一个值,然后查找这个值在某范围内的位置 ,输出的数字代表第几个位置
可以查行 也可以查列 但是只能查询单行单列
语法: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_value与lookup_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
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。
这个函数在使用的时候不会区分行,列 ,只要数第几个就可以了 , 不是数组的数法
这道题是真的看不懂
就是累加,但是每一次加的值是随机的
方法一: = 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
这个要找规律哦
第一个名字: 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
语法:INDIRECT(ref_text, [a1])
INDIRECT(引用区域,引用格式)
参数:
省直辖市自治区和关联市/区–下拉选框格式
方案:
(1)公式 > 名称管理器 > 新建 > 名称 输入 省直辖市自治区 > 再点击 引用位置 (选中省直辖市) > 确定
(2)选中所有数据的前几行 > 公式 > 根据所选内容创建 > 只勾选首行 > 确定
(3)在一个空白单元格 > 数据 > 数据验证 > 设置 > 允许(A)中选择 序列 > 来源 中输入 =省直辖市自治区 > 确定 就引用了身份
(4)在右边的空单元格中 > 数据 > 数据验证 >设置 > 允许(A)中选择 序列 > 来源 中输入 =indirect($A$2) > 确定
$A$2为第三步选中的空白单元格