首先,博主每天要更新大量的结构相对确定但条目数始终在变化的源数据,这使得更新过程中需要简化尽可能多的步骤,所以能够写为公式就写为公式,因为公式写好不需要再进行其他操作。
对高级用法需求不大接触不多,做过的遇到的都是偏应用,能用就行。
从2017年使用了一年多的谷歌表格,一直觉得很多方面都优于Excel(2017)。但由于一些原因近期所有内容需要在Execl上面做,所以重新接触Excel的同时写一下印象中两者存在差距的地方。


测试环境 win10 Office 365 Excel、Google Spreadsheets (2017-2019)


Office Excel 的优势

eval函数

n个elseif需要嵌套n次if函数,所以eval必不可少,利用单元格批量制造if函数,再textjoin把所有的if套起来,得到一长串的公式字符串。此时外面再加一个eval函数就能让这个函数起死回生。不过原生的Excel始终只支持到在定义名称中的引用中使用evaluate函数,所以略微麻烦,且有字符数限制,不过可以使用vba自定义函数(同理Google Sheets也可写gas自定义函数实现)
不得不说谷歌表格在这点是不足的,但是想必这个函数实现起来并不会很难,期待更新。
eval函数

表格

虽说Excel的运算优化不怎么样,但是在对数目不确定的源数据进行行列处理(添加辅助列等)时,表格功能很好用,它可以根据你的源数据条目数自动增加辅助列数量,再也不必预先写个几万行的公式,再也不会让让文档长度、文件大小、滚动条突破天际了。同时引用单元格也不需要行号列号了,直接[@表头]代表当前表格的某列的值或表格名[[#条件],[范围]:[范围]]引用其他表格范围,在源数据的列经常变动位置以及源数据条目数不确定的情况下,非常好用!
表格功能

时间内容识别

其实这里突出的是谷歌表格的缺点,在Excel中,输入Jan 4, 2018会自动将该单元格格式设为日期并格式化,而在中文界面谷歌表格中,无法被识别只能成为字符串,需要对字符串加工后再转化。当然,如果是英文界面的谷歌表格,是没有这种问题的。所以应该也是不难实现的。

保护、隐藏公式

在一些情况下,我们不想把公式显示出来,第一他有可能很乱,第二可能涉及保密(如公司kpi计算就是不允许对外公开的),而这个功能,可以通过设置密码将公式隐藏,编辑框会变成一片空白。谷歌表格不具备这种功能,但可以通过importrange实现,详见下文。

宏录制

想必很多小伙伴都使用过这个功能,可以将很长的历史操作步骤重复、重现。但是对于结构/长度有些许变化的数据,宏录制就失效了,需要在录制的基础上进行逻辑修改,否则宏录制的内容基本都属于硬编码。头铁的伙伴也可以直接写vba过程,结果上没有区别。
2019年5月更新,才发现谷歌表格也有宏录制了,据说18年5月就有了!!!
GS宏录制.png
看了下gas,谷歌np!试了下,不支持打印、设置、文件下载等操作的录制,看来还是需要慢慢完善。
GS宏录制代码

Google Sheets 的优势

正则表达式

正则表达式,效率工具必备技能好吧,Excel竟然还要借助vba自定义函数,难道版权受限了?不多说了
regex

数组

Excel的数组公式不仅难懂,编写的限制也很多,且其中的数组只能在计算过程中使用,在输出时只可以输出一个值。在谷歌表格中,数组的使用相当灵活,你可以在一个单元格中输入一片数据内容,如={1,2,3;4,5,6}={A1:A5,C1:C5},这让后面很多公式的实现容易了起来!
array

join split

在Office 2019和 Office 365中,Excel添加了textjoin函数,但split依然需要分列功能。而谷歌表格只需要一个公式就能解决这类问题
join
textjoin
split

unique, filter, query等优秀的[动态数组函数]

通常在Excel中辨别重复值的方法,都是使用条件格式,而删除重复值则更麻烦,一般会添加辅助列count函数标记值出现的次数,再删去大于1的列。或者使用数据透视表数据模型,再筛选重复值,这种方法计算量更大。而在谷歌表格,只需要一个函数unique(区域),就会给你返回一个干净的无重复值的结果
谷歌表格甚至吧筛选器写成了一个函数,需要更新结构复杂的数据的朋友,是不是觉得简直是一个救星,不需要每次都重新配置筛选器了。
unique

query函数可以说是本应该是表格效率工具的灵魂,但却一直没有在Excel中实现以及各种编程语言对数组操作也没有的功能,那就是通过sql查询语句筛选数据。因为工作表就是数据表,工作簿就是数据库,都是二维数组的结构,为什么不能用查询语句?vlookup很麻烦的好吗?我一直在想vlookup是谁设计的,参数为什么要做的这么不明所以?限制为什么这么多?不能反向,数据类型要匹配,只能有一个匹配条件,一点都不好用好吗,难道只能if构造大片的数组?大堆的重复辅助列?或者index match套用?每次都存成sql文件再打开power query再查询添加把数据导出来?那真不如用筛选功能了,一个函数的问题为什么要搞得这么复杂?(2019.9更新:xlookup这种设计的公式它不香吗,做不到吗??ㄒoㄒ)
query

filter也是一个十分实用的函数,可以认为是没有表头的query,而且参数结构跟sumifscountifs很相似,也可以认为是简化版的query
filter.gif

GAS取代VBA

不知道有多少人会专门为了Excel去学VBA,而且个人认为VBA的语法相较奇葩,学完很容易把各种语言记混。如果一个语言基于JS又能代替VBA,没错他就是GAS!开发起来十分轻松。(设计不难,但是优化嘛,,,本人gas写的很简单粗暴,运算量过大日常被ban)
9102年了还要写vba?那个限制单行字符数量的语言?编辑器、入口和运行的ui都有点反人类的设计?(啊!不要打人!)

importrange

同Excel引用其他表格,但是配合表格的读取权限,可以将源数据存到一个限制访问的文档,再授权一个公开文档提取源数据,达到保护源数据的作用。

行列移动

有的时候想要把行或者列移动一下,在Google表格中只需要选中列,并移动一下即可。然而在Excel中,就复杂了需要,需要剪切,插入,此时还会多了一列被剪切掉的空白行/列,需要再删除一下(明显程序员偷懒),删除不仅导致整个工作簿重新计算,数据量大的时候会卡,还会导致一些情况下的格式出错(如条件格式范围会变得乱七八糟)(我的错觉吗,365中实测没这个问题了,但是不管怎样还是直接拖动的体验要好很多)。
行列移动

其他细节

  • 图表透视表体验好,必要功能都具备,并且没有Excel那么难找/反人类;
  • Office表格现在也有了协作的功能了,我猜体验差不多(没用过365的协作。。),但毕竟谷歌表格基于网页,无需安装除浏览器外的任何软件,且计算云端处理,同时也能离线处理,是个非常大的优势;【201907更新】,上了一下Office官网,发现在线编辑还挺方便的,对比了一下,甚至更有优势0.0!能直接唤醒本地文件,也可以把本地文件拖进去进行在线编辑。就相当于比谷歌多了一个离线编辑器,赚了。权限方面也很不错,还能配合企业成员设置权限,估计谷歌的G-suit也差不多。但是谷歌表格另存为Excel就会头疼了,很不完美,而Office365,肯定是完全兼容(相同)啦~

excel365
office365
(Excel 365 在线编辑的时候无法写自定义公式条件格式,但是在本地写好后上传文件,在线编辑的时候,自定义公式条件格式是生效的,不知道为啥在线要阉割这部分。而且权限设置在网页端也不完美。更扯淡的是使用了部分功能后,网页版甚至会打不开)
打不开啊!

  • Excel的公式会自动转为大写,我又不是阿三,为什么非要大写,个人而言可读性下降,不是很喜欢这个特性。同时在编辑公式时,Excel的单元格会把公式展开并像狗皮膏药一样贴在单元格这一排,会挡住引用区域,无论如何滚动。而在谷歌表格中只需要稍稍滚动滚轮就可以将编辑框与原文错开,方便迅速看清引用情况(更新:Excel中点击上面的编辑栏就可以避免这个问题了,鼓掌);

引用查看

  • 键入公式时,能在Excel中看到函数名补全与参数名称,如果想了解更多需要点击打开帮助查看。但谷歌表格明显更用心一些,可以立即查看到函数的大致介绍,能够让人快速了解/回忆函数的用法。

函数介绍

  • 谷歌表格add-ons已经推出很久,2017年接触以来,感觉里面有很多实用的插件。Office似乎也出了一个Plugins,有时间体验下。

Office加载项

2019年8月:听说Excel2019已经添加了FILTERUNIQUESORTSORTBY等动态数组函数,而现在Excel365最新版1909还没有这个功能,气气,不会续费了!赶紧更新吧我再也不想用INDEXSMALLROW辣!
Dynamic Arrays & Dynamic Arrays Function

解决了。。竟然要从开发者预览版降级到预览体验这个版本。。。舒服了。。。
versions
舒服了
我特么写了大半天,最后发现不支持。。。。。。
辣鸡微软。。
唯一进步就是#这个运算符,是谷歌还未支持的。说到#,肯定会想到#value #name 等报错信息,其实#在现在的Excel中还有一个完美引用溢出范围的作用,因此也被叫作溢出范围运算符