Power Pivot实现Excel中Vlookup函数模糊查找功能

2020-03-24 15:35:18 浏览数 (2)

2. Lastnonblank

A. 语法

代码语言:javascript复制
LastNonBlank(<column>,<expression>)

参数

描述

column

列名或者具有单列的表,单列表的逻辑判断

expression

表达式,用来对column进行过滤的表达式

B. 返回

表——包含单列或者单行的最后一个值

C. 注意事项

  • 表达式是一个逻辑比较
  • 通常和calculate进行搭配组合
  • 另外可以类似Max函数结果返回

D. 作用

  • 返回表达式不为空的列的最后一个值。
  • 返回列表中最大的值

E. 案例

1. 返回第一个不为空的数据

代码语言:javascript复制
LastNonBlank:=LASTNONBLANK('表'[日期],"")

返回结果:2018/9/7。 这个也是最基础的用法,和函数表面意义相同

2. 返回列中最大的值

代码语言:javascript复制
LastNonBlank:=LASTNONBLANK('表'[金额],"")

返回结果:1000。此写法类似于Max函数,只不过max返回的是标量,lastnonblank返回的是单行单列的表。

3. 返回日期小于2018/9/6的第一个不为空的值

代码语言:javascript复制
LastNonBlank:=LASTNONBLANK('表'[日期]<date(2018,9,6),"")

返回结果:2018/9/4,因为第一个参数column是一个迭代器,可以进行每行判断操作。

4. 返回大于本行金额的最大值

代码语言:javascript复制
FirstNonBlank('表'[金额]>Eailier('表'[金额]),"")

返回结果:

这里的空值作为0来处理

实现Excel中Vlookup函数模糊查找功能。

分级表:

数据表:

通过分级表我们来确定考试成绩归属的级别,这个是一个经典的Vlookup函数的应用。那我们来看下如何在Power Pivot中进行实现操作?

1. 通过分级表的成绩和当前成绩进行比较,和当前行进行比较需要用到Earlier函数

代码语言:javascript复制
LastNonBlank('分级表'[成绩]<=Earlier('成绩表'[考试成绩]),"")

先看第一行 '分级表'[成绩]<=Earlier('成绩表'[考试成绩])。这个比较的结果就是0,60两个值的单列,然后通过LastNonblank获取最大值,也就是60。

返回的结果如下

2. 既然已经找到分级表中对应的成绩,那直接通过绝对匹配函数来实现,也就是用lookupvalue来实现。

代码语言:javascript复制
LookUpValue('分级表'[评级],'分级表'[成绩],
        LastNonBlank('分级表'[成绩]<=Earlier('成绩表'[考试成绩]),"")
            )

最终返回的结果:

请点个赞,转发分享给更多的人。

0 人点赞