
HI~我是星光。本期咱们来聊一下前两天布置的第23道作业题的各种解法。
【作业NO.023】问:模糊条件数据查询
题目内容概述如下。
C:D是数据源,F列是查询条件,在G列计算相关人员的得分。
解题方法无限。
01 | 函数
查找值在查找范围首列..▼
=VLOOKUP("*"&D2&"*",A:B,2,0)
方法2->
查找值不在查找范围首列..▼
=INDEX(B:B,MATCH("*"&D2&"*",A:A,0))
方法3->
适合多条件数组式查询..▼
=LOOKUP(1,0/FIND(D2,$A$1:$A$12),$B$1:$B$12)
02 | VBA
by:很多姐妹代码解析见注释
代码如看不全,可以左右拖动..▼
Sub ByVBA() Dim aRes, aData, i As Long, j As Long With Worksheets("数据表") aData = .Range("a1:b" & .Cells(Rows.Count, 1).End(xlUp).Row) '数据源 aRes = .Range("d1:e" & .Cells(Rows.Count, "e").End(xlUp).Row) '查询区域 End With For i = 2 To UBound(aRes) '遍历查询 For j = 1 To UBound(aData) '遍历数据源 If InStr(1, aData(j, 1), aRes(i, 1), vbTextCompare) Then '不区分大小写,判断关键字是否在指定字符串中出现 aRes(i, 2) = aData(j, 2) Exit For '找到结果即退出循环 Else aRes(i, 2) = "" '查无结果返回假空 End If Next Next Worksheets("VBA").Select Cells.ClearContents Range("a1").Resize(UBound(aRes), UBound(aRes, 2)) = aResEnd Sub
03 | PowerQueryby:很多兄弟代码如看不全,可以左右拖动..▼
let 数据源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],//数据源 查询表 = Excel.CurrentWorkbook(){[Name="表3"]}[Content],//查询表 结果 = Table.AddColumn(查询表,"得分",(a)=>Table.SelectRows(数据源,each Text.Contains([姓名],a[简称]))[得分]{0})in 结果
04 | SQLby:很多……大叔大婶代码如看不全,可以左右拖动..▼
SELECT b.简称, a.得分 FROM [数据表$A:B]a,[数据表$D:D]b WHERE a.姓名 like '%'& b.简称 &'%' AND b.简称 IS NOT NULL
05 | PowerPivot创建度量▼代码如看不全,可以左右拖动..▼结果:=VAR A = TOPN ( 1, VALUES ( '查询'[简称] ) )RETURN CALCULATE ( MAX ( '数据源'[得分] ), FILTER ( '数据源', SEARCH ( A, '数据源'[姓名], 1, 0 ) ) )
……文件下载百度网盘..▼https://pan.baidu.com/s/1vZAEjiAaGcCw-YbHRg8ZXA提取码: b6hr▎系统学习Excel
推荐加入我的Excel社群 ▎点击图片可获取相关推文..▼



