ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1805|回复: 20

EXCEL 能否实现这种乱序、模糊查询?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-3-21 11:59 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 vexce 于 2023-3-21 14:49 编辑


更新:
EXCEL 能否实现这种功能,用公式或 VBA 都行:
Sheet1. C 列数据行数不固定。
Sheet2, C, D 列是数据源,行数不固定。

要实现类似 LOOKUP(,0/ 的查找功能,按 sheet1 C 列内容,在 sheet2 C,D 列查询,
如果 sheet2 C 列的关键字全包含于 sheet1 C 列,就把对应的 sheet2 D 列值返回到 sheet1 D 列。
但是,难点是 sheet1 C 列的关键字的顺序与 sheet2 C 列不同。
这样的查询功能,可以实现吗?


Snip_14-48-01.jpg


BOOK4.zip (13.77 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

发表于 2023-3-21 12:06 | 显示全部楼层
同行比较 还是只要c列任意一行有就算?

TA的精华主题

TA的得分主题

发表于 2023-3-21 12:14 | 显示全部楼层
内置函数肯定没有这样的功能,用VBA,应该是挺简单的。

TA的精华主题

TA的得分主题

发表于 2023-3-21 12:44 | 显示全部楼层
vba匹配同行               

工作簿3.rar

17.13 KB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2023-3-21 12:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub ZFCCX()
    Dim rng As Range, SHT As Worksheet
    Dim Str As String, zhys
    Dim I As Integer, J, N, ARR
    Dim T
    Application.ScreenUpdating = False                         '//1رÕÆáĻˢDÂ
    Application.DisplayAlerts = False                          '//1رÕÏμí3ìáê¾
    Application.Calculation = xlManual
    On Error Resume Next
    T = Timer
    '//¿aê¼ê±¼ä

    Set SHT = ActiveWorkbook.ActiveSheet
    ROWX = SHT.UsedRange.Rows.Count                            '''.CurrentRegionμ±Ç°Çøóò'''.UsedRangeòѾ-ê1óÃμÄÇøóò'''.Columns
    ARR = SHT.Cells(1, 1).CurrentRegion '''UsedRange '''
   
    For I = 2 To UBound(ARR)
    N = 0
    For J = 1 To VBA.Len(ARR(I, 1))
    If InStr(1, ARR(I, 3), VBA.Mid(ARR(I, 1), J, 1)) > 0 Then N = N + 1
    Next J
    If Val(N) = Val(Len(ARR(I, 1))) Then ARR(I, 4) = ARR(I, 2) Else ARR(I, 4) = ""
    Next I
    SHT.Cells(1, 1).Resize(UBound(ARR), UBound(ARR, 2)) = ARR
    MsgBox "2éÑˉíê±Ï!" & vbCrLf & "óÃê±£o" & Format(Timer - T, "#0.0000") & " Ãë", , "LKQSMXWóÑÇéìáê¾!!"    '//ìáê¾ËùóÃê±¼ä
    Application.ScreenUpdating = True                          '//»Ö¸′ÆáĻˢDÂ
    Application.DisplayAlerts = True                           '//»Ö¸′Ïμí3ìáê¾
    Application.Calculation = xlAutomatic
End Sub

TA的精华主题

TA的得分主题

发表于 2023-3-21 13:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 lkqsmxw 于 2023-3-21 14:53 编辑

KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK改了改

工作簿3.rar

21.02 KB, 下载次数: 13

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-21 13:33 | 显示全部楼层
cjc209 发表于 2023-3-21 12:06
同行比较 还是只要c列任意一行有就算?

我的例子可能说得不清楚。是任一行。不是同行。

TA的精华主题

TA的得分主题

发表于 2023-3-21 13:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-3-21 13:48 | 显示全部楼层
这就是不论在哪行都可以对应找出来

工作簿3.rar

20.46 KB, 下载次数: 28

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-3-21 14:29 | 显示全部楼层
lkqsmxw 发表于 2023-3-21 13:03
KKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKK

强大如斯!感谢!
我发贴时以为不太可能实现,举的例子格式作了简化,现在把自己坑了。

可否再请教一下,表格作以下改动后 (请见附件),代码须如何改:
把数据源放到 Sheet2,
Sheet1 和 Sheet2 的第1,2行都是表头。
Sheet 1 的数据有时中间有空行。

我自己尝试改了几次,水平太菜,各种出错。

book3 by-lkqsmxw.zip (17.08 KB, 下载次数: 10)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 08:21 , Processed in 0.039337 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表