分享

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

 东东85nuh7gdm8 2025-01-07 发布于陕西

EXCEl中,只需输入关键字就能实现自动查询,而且关键字来自表中任何一列:

先看看动态图:

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

有两种方法可以实现这一功能:

第一种方法:是使用FILTER函数来制作查询

输入公式:

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

公式拆解如下:

(1)=FIND($H$1,A2:A24)

find函数的参数(查找值,查找范围)

这个函数会查找在A2到A24范围内的单元格中,是否包含H1单元格中的关键字,并返回该关键字在查找范围里的位置(以数字表示)。

如果找到,就返回该位置;如果没找到,就返回错误值。

如这里查找“高”,就会以1来显示

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

(2)使用IFERROR函数包装FIND函数

IFERROR(FIND($H$1,A2:A24))

因为filter第二参数是筛选条件,是根据TRUE来提取筛选结果的。所以要嵌套IFERROR函数使数字以逻辑值TRUE表示,#N/A以0来表示。

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

(3)使用FILTER函数

filter函数(显示筛选结果,筛选条件)

这个公式会筛选出A2到E24范围内,A列中包含H1单元格中关键字的所有行。

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

=FILTER(A2:E24,IFERROR(FIND($H$1,A2:A24),0))

这样就把姓名是含”高“的人员信息找出来。

(4)我们要实现多列的关键字查找。

只需在FILTER函数的筛选条件中增加相应的FIND函数。

”+“来连接筛选条件,代表只要满足一个条件就可以。

想同时查找A列和B列中包含关键字的行,比如现在要查找第2列中的”男“,只需要增加一个条件:+IFERROR(FIND($H$1,B2:B24),0)

输入公式:

=FILTER(A2:E24,IFERROR(FIND($H$1,A2:A24),0)+IFERROR(FIND($H$1,B2:B24),0))

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

同理,如果要查找五列中的任意一列包含关键字,只需继续增加FIND函数的条件即可。

最终公式为:

=FILTER(A2:E24,IFERROR(FIND($H$1,A2:A24),0)

+IFERROR(FIND($H$1,B2:B24),0)

+IFERROR(FIND($H$1,C2:C24),0)

+IFERROR(FIND($H$1,D2:D24),0)

+IFERROR(FIND($H$1,E2:E24),0))

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

效果如以下动态图所示:

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

第二种方法:使用VBA代码实现查询。

这种方法需要有一个查询工作表界面和另一个放数据源的工作表。

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

1、插入文本框

在查询工作表中插入一个文本框,选开发工具----插入----ACTIVEX控件-----文本输入框

此时,你的鼠标指针会变成一个十字形。

在工作表上点击并拖动鼠标,以绘制一个合适大小的文本框。

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

如果你没有看到“开发工具”选项卡,你需要先启用它。

(1)点击“文件”菜单,然后选择“选项”。

(2)在“Excel选项”对话框中,选择“自定义功能区”。

(3)在右侧的主选项卡列表中,勾选“开发工具”。点击“确定”以应用更改。

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

2、右点查询工作表----查看代码

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

(3)然后在代码框里:输入这两段代码

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

我把代码放在下面,你只需要拷贝就可以用了。在使用此代码时,请确保你的工作表命名与代码中的一致(例如,“数据源”和“查询”)。

Private Sub textbox1_Change()

If Len(TextBox1) >= 1 Then

Call 查询数据

End If

End Sub

Sub 查询数据()

Dim str As String

arr = Sheets('数据源').Range('A2:E' & Sheets('数据源').Cells(Rows.Count, 1).End(xlUp).Row).Value

Range('A4:E65535').ClearContents

j = 4

For i = 1 To UBound(arr)

str = arr(i, 1) & arr(i, 2) & arr(i, 3) & arr(i, 4) & arr(i, 5)

If str Like '*' & TextBox1.Text & '*' Then

Cells(j, 1) = arr(i, 1)

Cells(j, 2) = arr(i, 2)

Cells(j, 3) = arr(i, 3)

Cells(j, 4) = arr(i, 4)

Cells(j, 5) = arr(i, 5)

j = j + 1

End If

Next i

End Sub

然后把文件保存为启动宏的工作簿”.xlsm“。因为”.xlsx“文件是保存不了代码的。

两种方法的不同之处在于:

使用VBA代码时,无论数据源增加多少行或列,你都不需要修改公式。只需在代码中相应的地方增加或修改列即可。

EXCEl中,只需输入关键字就能实现自动查询!太帅了!

而使用FILTER函数时,每增加一列筛选条件,都需要在公式中增加相应的FIND函数。

你学会了?你会用哪种方法,请在评论区留言哦。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多