电脑教程
位置:首页>> 电脑教程>> office教程>> excel一对多查询新思路,自制多功能查询函数比vlookup函数更简单

excel一对多查询新思路,自制多功能查询函数比vlookup函数更简单

  发布时间:2022-07-17 02:17:18 

标签:excel一对多查询,多功能查询函数,vlookup函数

在工作中我们经常会碰到根据某个单一条件去查找对应的数据值,这个时候我们常用的一个万能查询函数那就是vlookup函数,vlookup函数可以实现基本的向左、向右以及多条件值数据查询等功能。但是这个函数有个弊端就是,不能实现返回多个数据值。

如当我们在查询某个人当天所有门禁刷卡时间或当天人员的所有销售记录时候,从上往下查找只能查找出最上面的第一条数据,无法提取出整天的数据。如果要实现这个功能就需要用辅助操作来实现,会显得比较麻烦。那么今天我们就来讲讲自定义多功能查询函数和vlookup函数分别是如何解决这个问题的。

方法一、vlookup函数如何查找返回多个数据值

问题:提取张三7月1日所有刷卡记录

excel一对多查询新思路,自制多功能查询函数比vlookup函数更简单 

如上图效果图所示,当我们输入函数=VLOOKUP(ROW(A1),A:D,4,0)往下拖动,张三当天的所有刷卡记录都会显示出来,因为总共只有3条数据,所以第四条结果开始就会出现错误值。

操作方法:

第一步:首先用countif函数做一个辅助列,因为单纯的vlookup函数查询是无法返回多个数值的。插入A列,辅助列函数为:COUNTIF(C$2:C2,F$4)。

excel一对多查询新思路,自制多功能查询函数比vlookup函数更简单 

注意点:函数COUNTIF函数中C$2:C2,是非常有深意的,用相对引用的方式往下拖动,分别代表的数据区域则为:C$2:C3、C$2:C4、C$2:C5等。这样代表的意思就是可以查找出对应的人出现过多少次。

第二步:输入函数VLOOKUP(ROW(A1),A:D,4,0)进行数据查询,然后往下拖动即可返回姓名为张三的所有值。

注意点:vlookup函数第一参数使用ROW(A1)为条件值的目的是,通过对应姓名所在的数值来进行数据查询。比如第一条记录8:38分,选择函数ROW(A1)按F9,返回的是1;第二条记录10:15分,选择函数ROW(A1)按F9,返回的是2,以此类推。效果如下图所示:

excel一对多查询新思路,自制多功能查询函数比vlookup函数更简单 

方法二:自定义Mlookup多功能函数查找返回多个数据值

问题:提取张三7月1日所有销售单号

excel一对多查询新思路,自制多功能查询函数比vlookup函数更简单 

如上图效果图所示,输入函数:Nlookup(F4,C:D,2,-1),即可返回张三7月1日销售的所有单号:2018070101,2018070106,2018070111,是不是感觉比vlookup函数更加简单神奇。这需要用到的是VBA代码来自定义一个Nlookup函数。

操作方法:

第一步:按alt+f11进入代码编辑窗口,新建一个模块;

excel一对多查询新思路,自制多功能查询函数比vlookup函数更简单 

第二步:输入以下代码后,保存为宏文件,即可使用自定义的Nlookup函数,如果你需要修改为其他自己喜欢的函数,可以全部替换即可。

代码如下:

Function Nlookup(rg, rgs As Range, L As Integer, M As Integer)

Dim arr1, ARR2, 列数

Dim R, n, K, X, cc, sr As String

arr1 = rg.Value

ARR2 = rgs

If VBA.IsArray(arr1) Then

For Each R In arr1

If R <> "" Then

cc = cc & R

列数 = 列数 + 1

End If

Next R

Else

cc = arr1

End If

If M > 0 Then '非查找最后一个

For X = 1 To UBound(ARR2)

sr = ""

If 列数 > 1 Then

For q = 1 To 列数

sr = sr & ARR2(X, q)

Next q

Else

sr = ARR2(X, 1)

End If

If sr = cc Then

K = K + 1

If K = M Then

Nlookup = ARR2(X, L)

Exit Function

End If

End If

Next X

ElseIf M = -1 Then '查找所有值

For X = 1 To UBound(ARR2)

sr = ""

If 列数 > 1 Then

For q = 1 To 列数

sr = sr & ARR2(X, q)

Next q

Else

sr = ARR2(X, 1)

End If

If sr = cc Then

Nlookup = Nlookup & "," & ARR2(X, L)

End If

Next X

Nlookup = Right(Nlookup, Len(Nlookup) - 1)

Exit Function

Else '查找最后一个

For X = UBound(ARR2) To 1 Step -1

sr = ""

If 列数 > 1 Then

For q = 1 To 列数

sr = sr & ARR2(X, q)

Next q

Else

sr = ARR2(X, 1)

End If

If sr = cc Then

Nlookup = ARR2(X, L)

Exit Function

End If

Next X

End If

Nlookup = ""

End Function

学习完上面的两种查询多个数据的方法,你现在认为哪一种方法更加简单了?当然这个多功能函数还包含有其他的功能,赶快尝试一下吧。

0
投稿

猜你喜欢

  • 插图命令组图片使用图片命令,可在工作表中插入指定的图片。联机图片使用联机图片命令,可从互联网或其他地方插入图片。形状使用形状命令,可从 Ex
  • excel数据透视表怎么处理公式中的布尔值?在我们编写公式时,特别是编写数组公式时,往往会生成由TRUE/FALSE值组成的中间数组。有些E
  • 大家在使用电脑过程当中经常会遇到不会读的文字,那有没有办法可以显示文字的拼音呢?其实在Word中就可以显示文字拼音。大家在使用电脑过程当中经
  • 现在很多用户经常外出的都喜欢轻便一点的电脑,所以这类人群为自己选择的电脑就会是笔记本电脑。使用笔记本电脑有一个特点就是如您合上电脑屏幕,它就
  • 1.打开Excel表格,点击工具栏的“数据”然后选择“数据有效性”2.在数据有效性里我们可以将有效性条件修改为“自定义”接着在公示栏输入“=
  • 我们编辑好一个word文档,如果需要插入页码,或者需要编辑目录,那么一定需要插入页码,接下来就由小编给大家分享下word中设置页码的技巧,希
  • 在excel内实现方框内打勾,今天本文介绍一个在excel内实现方框内打勾的应用实例:员工信息调查表。【例】的调查表中,1、性别可以单选2、
  • win10系统是一个非常强大的技术系统!用户可以根据自己的情况设置win10系统!win10系统的几乎所有功能都可以让用户根据自己的要求自己
  • 工作表是Excel实际应用的基本单位,由于它的结构比较特殊,一般情况下我们学习excel的时候都会先了解excel的界面和excel的输入技
  • 查找Word最近使用文档的方法:1、打开一个Word文件,点击左上角office按钮。2、在弹出的菜单中就可以直接查看最近使用的文档了。
  • 下载Office 2010后该如何安装了?下面office办公分享网就一步一步的详细教大家安装方法。勾选“我接受此协议的条款”,然后“继续”
  • word单元格怎么拆分两列?首先在打开的word2016文档中,我们定位到要编辑的单元格然后右键点击该单元格,在弹出菜单中选择“拆分单元格”
  • 一、VBA是什么鬼?怎么和她融洽相处?  VBA全名是Visual Basic for Application,VBA有以下作用:
  • 知道如何在Word中输入带圈字符还是非常有用的,因为像一些序号或者在方框中打钩、打叉,都要用到输入带圈字符的知识,大家一定要跟着易捷PDF转
  • 在对一些长文章的排版里面,很头疼的是重复劳动、自动化程度不高的问题,其实这些重复劳动是没有必要的,用Word都可以解决这些问题,下面小编为大
  • 日常使用电脑的时候碰到无internet访问权限的网络问题,很多小伙伴都会打电话给网络供应商看看是否欠费,在没有欠费的情况下,那就是系统无i
  •  如何在Word 2016中制作编号列表?在Word 2016中,制作编号列表非常容易;Word为您完成了大部分工作。有关编号项目
  • 很多小伙伴们都知道当电脑出现漏洞的时候使用补丁去修复漏洞,但是大家一般不知道怎么下载相应的补丁,也不知道怎么应用到电脑上去达到补丁的效果。今
  • Excel排序非常方便,在对数据进行排序时用起来特别顺手。但是,很多网友都有遇到一个问题,点击数据排序时它默认的是按照列来排序的,而在对数据
  • 一、取消Word的自动编码我们都知道电脑上的所有操作其实都是通过设定指令来让它执行的,虽然方便快捷,但是由于它不会灵活变通,就会给我们带来一
手机版 电脑教程 asp之家 www.aspxhome.com