加个辅助列,小白也能搞定很多神难题!

经常看到有人出一些Excel的题,要求用公式解,然后注明一句:用函数,不允许增加辅助列!比如这种:

——怎么样?“还不算太难……哈哈”。

不过,说实话,我对“用函数,不允许增加辅助列”这句话特别,特别,特别的反感——因为,有很多问题,本来要求用函数解就很麻烦,然后还不允许增加辅助列——以我的智商,很多时候真是写不出来嘛!

那怎么办?——该加辅助列加辅助列啊,该用Power Query用Power Query啊……本来就很简单的事,为什么要搞那么复杂?比如,这个问题用Power Query来做,分组、改个函数:

轻松,愉快,不用脑……

但是,大家其实知道我的重点是讲Power系列,所以,前面这个用Power Query轻松解决Excel中的基本问题的例子,并不是今天的重点——我今天真正想说的是,“用函数,不允许增加辅助列”这种问题,在Power Query本身的使用中,也需要注意。

比如下面这个例子,是群里一位PQ爱好者给出的,即要根据左表中同一“姓名”同一“工作单位”的“工作时间”逐月连续的数据进行分组,并得到“开始时间”和“结束时间”,如下图所示:

当然,作为一位Power Query爱好者,纯粹是为了研究、练手,并且直接给出了自己的“一个公式搞定”的解决方案,并自觉得比较复杂——这种分享精神,非常“抵赞”!

公式如下:

有兴趣的朋友可以研究一下(貌似由于微信文章的限制,超过一定的行数会出现代码):

=Table.Group( Table.FillDown( Table.FromColumns( Table.ToColumns(a) &{List.Transform( {0..Table.RowCount(a)-1}, each if _=0 then 0 else if a[工作单位]{_}=a[工作单位]{_-1} and a[工作时间]{_}=Date.AddMonths(a[工作时间]{_-1},1) then null else _)}, Table.ColumnNames(a)&{"分组"}), {"分组"}), {"姓名","分组","工作单位"}, {{"开始时间",each List.Min([工作时间])}, {"结束时间",each List.Max([工作时间])}})

我简单数了一下,这个公式大概用了10个不同的函数,再加上条件判断语句、以及对PQ数据引用的熟练运用——对于大多数的普通Excel用户来说,写出这个长公式,绝对不是一件容易的事——这也不是我推荐大家使用Power Query的初衷。

那么,对于普通用户,这个问题怎么解决呢?其实只要加个辅助列,然后要写的公式就比较简单了,具体过程如下:

Step 01添加索引列

Step 02借索引列写公式,确定到需要分组内容的第一行

if [索引]=0 then [索引] else if a{[索引]-1}[姓名]=[姓名] and a{[索引]-1}[工作单位]=[工作单位] and a{[索引]-1}[工作时间]=Date.AddMonths([工作时间],-1) then null else [索引]

看起来很长?不过理解起来和写起来容易多了,如果感觉还有难度,那回头看一下关于PQ表结构的文章《重要!很重要!非常重要!理解PQ里的数据结构(三、跨行引用)》。

Step 03填充

Step 04分组

结果就这样出来了:

到了这里,终于到谈谈感想的时候了。

 除非你是因为爱好,为了练技能……在实际工作中,绝大多数的时候,无论你是在Excel里还是Power Query里,你并不需要去写一些复杂到可以“引以为傲”的公式,而是通过换一个方式,加个辅助列,哪怕甚至加个辅助表,那些看起来很麻烦的事情,实际就变得简单了很多

同时,非常感谢各位爱好者、大神来为大家提供多种多样的问题解决思路和方法,只要不是这样的,我们无任欢迎!

【近期热门合集/文章】

(0)

相关推荐

  • 不可能的透视表之如何在透视表中显示文本

    我们,让Excel变简单 我们面对的问题很简单. 假设有以下数据: 数据中记录了各部门的人员 现在我们需要将这份数据进行如下的展示: 我们有什么方法能快速做出这个报表,并且这个过程还能够自动化:即如果 ...

  • 通过#shared 调取Power Query M函数集

    转自微信 有时候我们需要使用Power Query内置的M函数,今天给大家分享如何通过#shared 调取M函数的方法: 1.首先在Power Query里新建一个空查询. 2.编辑栏输入: &quo ...

  • Power Query-突破IF函数嵌套进行范围匹配

    Power Query-突破IF函数嵌套进行范围匹配

  • Power Query:2步搞定数据转换神难题

    小勤:大海,刚有个同事在问我这种情况怎么办!公式怎么写啊? 大海:为什么又要公式? 小勤:还有大批量数据都需要做这样的迁移啊.公式不是更加自动一点吗? 大海:PowerQuery不是更加自动吗?第一反 ...

  • 厨房小白十分钟搞定家常菜-红烧土豆鸡翅!

    零失败的配方,简单容易上手,是妈妈的味道. 1. 材料: 鸡翅中:8只 土豆:3个(中等) 胡萝卜:1/3 根(可以不放) 2. 调料 大勺- 汤勺  小勺- 茶勺 美极酱油 : 三大勺 葡萄籽油- ...

  • 2021.3.27菜谱 | 剩米饭别扔!加一勺面粉,5分钟搞定酥香可口的锅巴,吃着嘎嘣脆!

    暖粉看过来: 在此,暖暖要跟大家说明下: 咱们暖暖的味道节目每周六16:38分首播,每周的新菜谱会在周日3条推送. 如果你想知道重播菜谱做法:点击底部菜单栏[搜菜谱]-[搜菜谱]-[输入关键词]即可查 ...

  • 【技巧】一列数据转一行4列,一秒搞定!

    大家晚上好! 如上图所示, 现在,BOSS要调整一下,一行4组数字, 顺序还不能改变 还有这么无理的要求? 没关系,达人哥教你用文本与表格互换功能, 瞬间搞定,包你满意! 第一步:文本转换成表格 首先 ...

  • 不要再Ctrl V了!一列数据转多列,2招搞定

    大家好,我是潜伏在很多群里,时不时冒个泡的小爽~ 在群里,我看到这样一个问题:如何批量整理标题和链接? 我简单整理了一下(如下表),大致的需求就是:将左表整理成右表的形式. ▲ 为方便演示,仅展示部分 ...

  • 不要再Ctrl V了!一列数据转多列,2招搞定!

    大家好,我是瓜叔 我看到这样一个问题:如何批量整理标题和链接? 我简单整理了一下(如下表),大致的需求就是:将左表整理成右表的形式. ▲ 为方便演示,仅展示部分数据 如果是你,你会怎么做呢? 群内的小 ...

  • 3招把莲藕炖得粉烂,小白也能搞定汤鲜藕糯肉烂!

    转眼间,又到了吃莲藕的好时节,相信不少朋友都非常激动吧,毕竟莲藕的营养价值很高,而且烹饪方法多种多样,不管怎么烹饪都会非常的美味,在寒冷的冬天,来上一碗热腾腾的藕汤是一件非常幸福的事情,不仅能暖身还能 ...

  • 忘了给图片加标尺怎么办?ImageProPlus一招搞定!

    ! 1. 教会Image Pro Plus:建立图片像素与实际尺寸的联系 (1)打开IPP,打开一张你曾经拍过且带有标尺的图片. (2)选择Measure → Calibration → Spatia ...

  • 小白必读:搞定复试第一步!

    对于初试,可能有经验的同学并不在少数.但对于考研复试,几乎可以说在座的各位都算是一无所知的小白. 大部分同学光懂理论,没有实践经验.更别说还有同学连复试的基本常识都不知道. 所以,Bilin君特地邀请 ...