pandas excel lookup函数_总结篇-LOOKUP函数实用终极帖

27b4710e66011efb381b4b412328125f.png

在EXCEL的查找函数中,除了我们都知道的大名鼎鼎的VLOOKUP函数外,还有一个非常重要的函数--LOOKUP函数。它应用广泛,灵活性强,可以说是“三千宠爱在一身”。下面我们就来总结一下这个函数的一些主要用法。

用法一:查找数值

下例中,要依据商品编号来查询单价和运费。

c11f71ecb8bf1f7c6a6c86c9d7dd356e.png

思路:

  • 依据LOOKUP函数向量形式的要求,确保查找参数处于升序状态
  • LOOKUP函数按查找到的位置找出第二个区域中相同位置的值

用法二:提取文本中的数值

下例中,需要将数字从文本中提取出来。除了LOOKUP函数之外,我们还可以使用SUBSTITUTE函数或者EXCEL自带的分列功能。

118edf2bde011ce5ed2033271b56d8c7.png

在单元格C2中输入

“=-LOOKUP(1,-LEFT(A2,COLUMN(A:X)))”,回车后得到数值。

在单元格B2中输入

“=RIGHT(A2,LEN(A2)-LEN(C2))”,回车后得到文本。

思路:

  • 用COLUMN(A:X)来产生一个新的数组{1,2,3...24}
  • 用left函数,分别提取出“1,16,168...”,并形成一个新的数组
  • 加负号使数字类型的数据变成负数
  • 使用lookup函数在数组中查找“1”
  • 查找不到“1”,因此返回数组中最后一个数字型数据“-168318”
  • 最后负负得正用法三:提取最右侧的文本
    一般而言,一行中最右侧的数据往往都是最新的数据。很多时候都需要提取最新的数据,如下列:

ec6539a52ffb0273b84021535d7c9616.png

在单元格A5中输入

“=LOOKUP(1,0/($A$2:$C$2<>""),$A$2:$C$2)”并回车。

思路:

  • 首先判断单元格区域A2:C2中是否为空,产生一个新的数组后,在用“0”去除这个数组,又得到一个新的数组{0,0,0}
  • 使用lookup函数查找“1”,差找不到则返回A2:C2中最后一个数据

用法四:提取最右侧的数值

同上例,需提取最右侧数值。

3d510d9fc3ebaad186ef0ef897e049d4.png

在单元格A5中输入

“=LOOKUP(9E+307,A2:C2)”

思路:9E+307是Excel世界中的最大值。当函数查找不到查找值时,就返回区域中最右侧的数据。

注意:当一行区域内即有文本也有数值时,如果想提前最后一位数据,可以将公式书写为:“=LOOKUP(1,0/(A:A<>""),A:A)”,即提取文本的那个公式。

用法五:逆向查找

当由于某种原因不能改变表格结构是,就可以使用此方法来查找数据了。

fd23bdc3817683612b07390f7725183d.png

在单元格E2中输入

“=LOOKUP(1,0/($B$2:$B$4=D2),$A$2:$A$4)”

思路:这个和前面提取最右侧文本的那个用法类似。它们有一个通用的公式:LOOKUP(1,0/(条件),目标区域或数组)

注意:如果是多条件查询,那么公式可以写成下面的样子:

=LOOKUP(1,0/((条件1)*(条件2)*(条件3)),目标区域或数组)

这个就是LOOKUP函数查找的经典公式。

用法六:多区间条件判断

234c8caec52cfdcbc44c338fad1d7135.png

在单元格G2中输入

“=LOOKUP(B2,{0,59,79,95;"不及格","良","优良","优秀"})”回车并下拉即可。

用法七:根据简称查询全称

eee8a496f608986bffeca5a0b752bcce.png

在单元格B2中输入

“=IFERROR(LOOKUP(1,0/FIND(A2,$D$2:$D$6),$D$2:$D$6),"")”并下拉即可。

思路:

  • 用FIND函数查找A2中的简称在客户清单中的位置
  • “0/FIND”返回了一个数组{0;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
  • LOOKUP函数返回查找到的全称
  • IFERROR屏蔽查询不到后返回的错误值

用法八:合并单元格的查找

下例中,我们将通过姓名来查询部门。

c5835651520a2a0033b2f48314a96510.png

在单元格E2中输入

“=LOOKUP("座",INDIRECT("A2:A"&(MATCH(D2,$B$2:$B$9,0)+1)))”并下拉即可。

思路:

  • MATCH函数用来返回查找员工的姓名在姓名列中的位置
  • INDIRECT函数返回一个动态的单元格区域,范围是从单元格A2到和姓名单元格所对应的单元格
  • LOOKUP查找得到部门。汉子“座”是汉字中ANSI代码比较大的字符,确保了可以查找到单元格区域中最后一个数值

010cdc4b6d206d0ee3c782062c9661df.gif

大家要多多动手操作,才能更快地掌握这些技巧!

-END-

欢迎关注【Excel应用之家】专栏,了解更多的Excel实际应用技能,尽在Excel应用之家!

版权声明:本文归Excel应用之家专栏(微信公众号Excel应用之家)原创撰写,未经允许不得转载。欢迎关注专栏/公众号。

ef3b71a1d9691f4dcb8478fe6c20a045.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: import pandas as pd # 读取excel文件 df = pd.read_excel('file.xlsx') # 获取lookup函数的值 lookup_value = df.lookup('key', 'column_name') # 打印出值 print(lookup_value) ### 回答2: 以下是一个用于解析ExcelLookup函数的Python代码示例: ```python import openpyxl def lookup(lookup_value, lookup_range, result_range): # 读取Excel文件 workbook = openpyxl.load_workbook('example.xlsx') worksheet = workbook.active # 遍历查找范围 for row in worksheet[lookup_range]: for cell in row: if cell.value == lookup_value: # 返回结果范围的对应值 result_cell = worksheet[result_range][cell.row-1][0] return result_cell.value # 如果未找到匹配值,则返回None return None # 调用lookup函数进行测试 result = lookup("Apple", "A1:A5", "B1:B5") print(result) ``` 在上面的代码中,我们使用openpyxl库读取Excel文件,然后遍历查找范围中的每个单元格,比较其值是否与目标查找值相等。如果找到匹配的值,则返回结果范围中对应单元格的值,如果未找到匹配值,则返回None。在最后的测试代码中,我们调用lookup函数来查找示例.xlsx文件中"A1:A5"区域中值为"Apple"的单元格,并返回对应的"B1:B5"区域中的值。 ### 回答3: 解析Excellookup函数可以使用Python的openpyxl库来实现。下面是示例代码: ```python from openpyxl import load_workbook # 加载Excel文件 wb = load_workbook('example.xlsx') # 选择需要解析的工作表 ws = wb['Sheet1'] def lookup(lookup_value, range, result_column): # 遍历每一行数据 for row in ws.iter_rows(min_row=2): # 获取lookup值的列索引和结果列索引 lookup_col = ord(range[0]) - 65 result_col = ord(result_column) - 65 # 判断lookup值是否匹配 if row[lookup_col].value == lookup_value: # 返回结果 return row[result_col].value # 如果没有找到匹配值,则返回None return None # 测试lookup函数 result = lookup('Apple', 'A2:A6', 'B') print(result) ``` 以上代码通过openpyxl库加载Excel文件,并选择需要解析的工作表。lookup函数接收三个参数:lookup_value为需要查找的值,range为查找范围,result_column为结果列。通过遍历每一行数据,比较lookup_value与range中每个单元格的值,如果匹配则返回对应结果列的值。如在示例代码中,查找值为'Apple',查找范围为A2:A6,结果列为B,则打印出对应结果单元格的值。如果没有找到匹配值,则返回None。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值