Excel vlookup 一个参数引发的加班 range_lookup 默认值为 true 表示 模糊匹配

Summary

Excel 中的查找函数 vlookup(lookup_value,table_array,col_index_num,[range_lookup])的第四个参数,range_lookup可省略。
若省略,则使用默认值true,效果为:模糊匹配

如果你的查找功能是精确匹配,一定记得别省略,一定要传入第4个参数range_lookup的值为0false

官网文档:https://support.microsoft.com/zh-cn/office/vlookup-942f678a-1bfc-4ccf-8dfa-f5057ded5c65
在这里插入图片描述
Excel 函数参数:
在这里插入图片描述

Scenerio

作为开发人员,产品经理时不时会扔过来一个Excel,里面包含本次迭代的原始数据(会经常有更新)。
而开发人员的工作就是:Excel --> Database 即将Excel中的数据经提取、转换后注入到业务数据库中。

Excel --> Database 这中间的流程一般不会手动去做(除非数据量真的很少)。
那么可以采取的做法有:

  1. 使用任一种自己熟悉的编程语言,该语言有开源的、用于读写Excel的类库,以及读写对应数据库的类库(这个应该都有)。如 Java和JavaScript。
  2. Excel公式,批处理
  3. 多行文本编辑(VSCode 以及 Sublime text 就支持)
  4. 手动转换(人力成本、时间成本大,且流程不易固定,出错率高)

方法1的缺点:
- 比较:转换100条数据和转换100万条数据,要写的代码逻辑步骤大致相同;
- 不灵活:针对转换模式不固定/会经常变动 的Excel,要经常去调整对应的逻辑,并仔细地调试、测试、验证

所以我选了2+3的方式。
先在Excel中使用 vlookup, is, text, concatenate 等一系列函数产生一些有利于我生成SQL文本的"元数据/源字段"。
然后复制这些内容到VSCode中,通过多行编辑调整到SQL的语法。
粘贴SQL到数据库客户端执行。

问题就出在 vlookup 函数的使用上。
当我对数据库中的新数据做多表的关联查询分析时,发现数据库结果集和Excel中的行列数据不完全一致
哪里出了问题?

排查

肉眼看。
发现使用 vlookup 函数处理的单元格中数据不对。

通过搜索了解到 Excel 中的查找函数 vlookup 有四个参数,第四个参数可省略。但是,不能省略!
VLOOKUP(lookup_value,table_array,col_index_num,[range_lookup])
前几个参数,能搜到这里的朋友应该都懂。

range_lookup 值规则 默认为模糊匹配

range_lookup 控制查找是精确匹配还是模糊匹配。
range_lookup = 0 或 false 是精确匹配
range_lookup = 1 或 true 是模糊匹配
如果不写,默认值为true,即默认为模糊匹配

由于我在使用过程中没有注意到这个函数的细节,导致需要加班重新转换数据。

More

Excel中几个功能相似的查找函数:

  • lookup 查找
  • vlookup (Vertical lookup) 纵向查找
  • hlookup (Horizontal lookup) 水平查找
  • xlookup (eXtensive lookup) 有扩展功能的查找
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值