Excel的查找和引用函数:VLOOKUP、OFFSET、MATCH、INDEX、INDIRECT

一.函数清单

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

二.详解函数

1.VLOOKUP()

(1)语法:VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])。
​ VLOOKUP(查找值,查找范围,查找列数,精确匹配或者近似匹配)
(2)参数

参数简单说明输入数据类型
lookup_value要查找的值数值,引用或文本字符串
table_array要查找的区域数据表区域
col_index_num返回数据在查找区域的第几列数正整数
range_lookup精确匹配/近似匹配FALSE(或0)/TRUE(或1或不填)

要查找的区域应该始终位于所在区域的第一列,这样 VLOOKUP 才能正常工作
只支持正向查找

(3)案例
需求1:将I列的数据库技术与编程复制到D列的数据库技术与编程
在这里插入图片描述
方法:=VLOOKUP(B2,$H$2:$I$122,2,FALSE)
在这里插入图片描述
操作结果:
在这里插入图片描述
需求2:
a.通过身份证号码获取省编号
在这里插入图片描述
方法:LEFT(D2,2)
在这里插入图片描述
操作结果:
在这里插入图片描述

知识点:
  LEFT 从文本字符串的第一个字符开始返回指定个数的字符。
   LEFT(text, [num_chars]):
    Text 必需。 包含要提取的字符的文本字符串。
    num_chars 可选。 指定要由 LEFT 提取的字符的数量。
      num_chars 必须大于或等于零。
      如果 num_chars 大于文本长度,则 LEFT 返回全部文本。
      如果省略 num_chars,则假定其值为 1。

b.通过身份证号码获取所属省自治区直辖市
在这里插入图片描述
在这里插入图片描述
方法:=VLOOKUP(LEFT(D2,2),全国地区表!$A$1:$B$34,2,FALSE)
操作结果:
在这里插入图片描述
c. 通过身份证号码获取出生日期
在这里插入图片描述
方法:=–TEXT(MID(D2,7,8),"####-##-##")
操作结果:
在这里插入图片描述

知识点:
MID 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。
MID(text, start_num, num_chars):
  文本 必需。 包含要提取字符的文本字符串。
  start_num 必需。 文本中要提取的第一个字符的位置。 文本中第一个字符的start_num 为 1,以此类推。
    如果 start_num 大于文本长度,则 MID/MIDB 返回 “” (空文本)。
    如果 start_num 小于文本的长度,但 start_num 加 num_chars 超过文本的长度,则MID/MIDB 返回文本结尾的字符。
    如果 start_num 小于1,MID/MIDB 将返回 #VALUE! 。
  num_chars 对 MID 是必需的。 指定希望 MID 从文本中返回字符的个数。
    如果 num_chars 为负值,MID 将返回 #VALUE!。

2.OFFSET()

(1)语法:OFFSET(reference, rows, cols, [height], [width])
Offset(参照单元格,行偏移量,列偏移量,返回几行,返回几列)
(2)参数
Reference 必需。 要作为偏移基准的参照。 引用必须引用单元格或相邻单元格区域。否则, OFFSET 返回 #VALUE! 。
Rows 必需。 需要左上角单元格引用的向上或向下行数。 使用 5 作为 rows 参数,可指定引用中的左上角单元格为引用下方的 5 行。 Rows 可为正数(这意味着在起始引用的下方)或负数(这意味着在起始引用的上方)。
Cols 必需。 需要结果的左上角单元格引用的从左到右的列数。 使用 5 作为 cols 参数,可指定引用中的左上角单元格为引用右方的 5 列。 Cols 可为正数(这意味着在起始引用的右侧)或负数(这意味着在起始引用的左侧)。
高度 可选。 需要返回的引用的行高。 Height 必须为正数。
宽度 可选。 需要返回的引用的列宽。 Width 必须为正数。

(3)作用:提取单元格的值,或者目标区域的值
(4)备注
如果 “行” 和 “cols 偏移” 引用覆盖了工作表的边缘, 则 offset 返回 #REF! 。
如果省略 height 或 width,则假设其高度或宽度与 reference 相同。
OFFSET 实际上并不移动任何单元格或更改选定区域;它只是返回一个引用。OFFSET 可以与任何期待引用参数的函数一起使用。 例如,公式 SUM(OFFSET(C2,1,2,3,1)) 可计算 3 行 1 列区域(即单元格 C2 下方的 1 行和右侧的 2 列的 3 行 1 列区域)的总值。
(5)案例
需求:不规则坐标复制固定区域
在这里插入图片描述
方法:=OFFSET(A1,5,2,3,3)
操作结果:
在这里插入图片描述

3.MATCH()

(1)语法:MATCH(lookup_value, lookup_array, [match_type])
​ MATCH(查找值,查找区域,查找方式)
(2)参数
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:降序
(3)案例
需求:统计左栏和右栏匹配个数
在这里插入图片描述

方法:=COUNT(MATCH(A2:A11,B2:B11,0))
操作结果:
在这里插入图片描述

4.INDEX()

(1)语法:INDEX(array, row_num, [column_num])
​ INDEX(选择范围,行,列)
(2)参数
array 必需。 单元格区域或数组常量。
如果数组只包含一行或一列,则相应的 row_num 或 column_num 参数是可选的。
如果数组具有多行和多列,并且仅使用 row_num 或 column_num,则 INDEX 返回数组中整个行或列的数组。
row_num 必需,除非存在 column_num。 选择数组中的某行,函数从该行返回数值。 如果省略 row_num,则需要 column_num。
column_num 可选。 选择数组中的某列,函数从该列返回数值。 如果省略column_num,则需要 row_num。
(3)案例
需求:根据位置来查找数据
在这里插入图片描述

方法:=INDEX(B2:H14,6,4)
操作结果:
在这里插入图片描述

5.INDIRECT()

(1)语法:INDIRECT(ref_text, [a1])
​ INDIRECT(引用区域,引用格式)
(2)参数
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 样式的引用
(3)案例
需求1:二级组合框
=INDIRECT(直接引用单元格地址)
=INDIRECT(A4)
在这里插入图片描述
操作结果:
在这里插入图片描述

=INDIRECT(引用字符串)
=INDIRECT(“A4”)
在这里插入图片描述
操作结果:
在这里插入图片描述
需求2:省直辖市自治区和关联市/区–下拉选框格式
在这里插入图片描述
在这里插入图片描述

方法:
a.公式—》名称管理器—》新建—》名称—》省直辖市自治区—》引用位置
b.公式—》选中市区数据—》根据所选内容创建—》首行
c.数据—》数据验证—》序列—》来源—》=省直辖市自治区
d.数据—》数据验证—》序列—》来源—》=indirect($A$3)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
操作结果:
在这里插入图片描述

6.综合练习

需求1:累积数据,计算累加和
在这里插入图片描述
方法1:=SUM($B$2:B2)
方法2:=SUM(OFFSET($B$1,1,0,DAY(A2),1))
方法3:=SUM(OFFSET($B$1,1,0,ROW(A1),1))
方法4:=SUM(OFFSET($B$1,1,0,COUNT($B$2:B2),1))
在这里插入图片描述
操作结果:
在这里插入图片描述
需求2:提取姓名
在这里插入图片描述

方法1:=OFFSET($B$1,ROW()*2-3,0)
方法2:=INDEX($B$1:$B$12,ROW()*2-2)
方法3:=INDEX($B$2:$B$12,ROW()*2-3)
在这里插入图片描述
操作结果:
在这里插入图片描述

  • 4
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Excel中,VBA是一种编程语言,可以用来自动化执行一系列操作。如果要通过VBA来调用VLOOKUP函数实现动态查询,我们可以按照以下步骤进行操作: 1. 打开VBA编辑器:在Excel中按下Alt+F11键,即可打开VBA编辑器窗口。 2. 在VBA编辑器中插入新的模块:在"插入"菜单中选择"模块",即可在项目资源管理器中创建一个新的模块。 3. 编写VBA代码:在新的模块中输入以下代码,用于调用VLOOKUP函数实现动态查询。 ```vba Function VLOOKUP_Dynamic(LookupValue As Range, LookupRange As Range, ColumnIndex As Integer) As Variant Dim Result As Variant Result = Application.WorksheetFunction.VLookup(LookupValue, LookupRange, ColumnIndex, False) VLOOKUP_Dynamic = Result End Function ``` 4. 保存并关闭VBA编辑器:保存VBA代码,然后关闭VBA编辑器窗口回到Excel工作表。 5. 在单元格中调用VBA函数:在Excel工作表中选择一个单元格,在函数栏中输入"=VLOOKUP_Dynamic(要查找的值, 查找范围, 返回列索引)",并按下回车键。其中,"要查找的值"是要动态查询的值,"查找范围"是要进行查询的范围,"返回列索引"是要返回的列号或列索引。 通过以上步骤,我们可以通过VBA调用VLOOKUP函数实现动态查询。每当单元格中的值发生变化时,VLOOKUP_Dynamic函数将会重新计算并返回相应的查询结果。这种方法可以节省时间和手动操作的复杂性,提高查询的效率和准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值