2020-04
29

半桶水的烦恼

By xrspook @ 8:52:24 归类于: 烂日记

要实现某个功能,有非常多的做法,到底要怎么做才能避免出错呢?Excel的函数非常牛逼,把那些公式弄好了,简直就是天下无敌的节奏。公司的原理很简单,但是套用起来做着做着就傻瓜了。有可能是手贱,标点符号按错了,更大的可能性是单元格引用出错。我已经不记得用Office 2003的时候是个什么状态了。反正在Office 365下面,如果在一个工作簿里面应用了别的工作表,把带公式的工作表复制到另外一个工作簿里的时候,那些引用的单元格会以绝对地址的形式继续指向原来工作簿的某个表。显然,如果只是指向本工作簿的话,找不到地址,顶多显示错误,但是如果那东西继续指向原表,会引发很多问题。因为那是一个绝对地址,即便你把工作放在同一个文件夹下面,还是不能解决问题。恐怖的绝对地址会导致云同步、在多人协作的时候,发生状况。为什么Office 2003下就没有绝对地址和相对地址这个烦恼呢?在Office 365下,数据透视表的绝对地址算是终于改正过来了,但我想不到公式居然也这样。这是一个令人非常崩溃的事情!如果工作表里面的公式是大量的,这将是一个灭门灾难。如果某一个工作表里面的公式是大量的,而另外一个工作表里面的源数据也是大量的,外加还有一个数据透视表指向了源数据。无论是动哪一个,都会导致另外的那个上的工作推倒重来。为什么就不能设置某个工作簿里面的链接采用相对工作簿内的连接,而不使用外联呢?停止了外联,就意味着那个单元格的数据从一个动态的东西变成了静态的。绝对地址这个问题,在云同步、在多设备协作的情况之下,根本是无法操作的,为什么微软会犯如此低级的错误呢?数据透视表的傻逼是发生在Office 2010版之后的。公式上的傻逼,之前貌似我还没遇到过。可能并不是因为不存在,而纯粹是因为我没有用到这种功能。

但Excel不能一次性满足我所有想要的东西的时候,我就会想到要不要自己写个脚本解决一切难题。人想得到的逻辑,用脚本都能实现,前提是必须考虑出一种能够包容所有例外的规则。如果不能包含特殊情况,脚本写出来是毫无意义的,因为最终还是得人手去加工,这非常不科学。所以一定程度上,我更喜欢用数据透视表,自动处理那些东西,而不是手动设置公式。设置公式理论上是一个一劳永逸的过程,但实际上只要你手动在上面修改了一些东西以后,就像蝴蝶效应一样,后果不堪设想。某一次的修改,会导致往后半天都找不出原因。如果用数据透视表的话,双击单元格就会到达最基础的那个数据。查错是非常简单的,但是,用了公式以后,然后你又因为某次犯傻在某个你以为设置了公式的单元格里面输入了常数,那将导致一次令人绝望的debug。不要问我为什么会知道……

与其让我查找错误,还不如让我总结特点制定规则,让他们不犯错误。当然,不犯错误,是根本不可能的。

2020-04
26

令人兴奋的Excel新函数filter

By xrspook @ 9:17:59 归类于: 烂日记

大概2020-04-22就听说Office 365要变成Microsoft 365,但我Win 7上的Office 365貌似没有什么变化。之前更新了个版本,牛逼的filter函数有了!有了filter以后高级筛选那些复杂的东西根本无需存在。如果只是为了筛选明细,filter很完美了。我觉得这个应该是数据库的函数,但现在也直接在公式层面实现了,牛逼!filter能做高级筛选,但如果我要的是筛选后数据的汇总,我个人感觉还是数据透视表好一点。其实数据透视表也能做明细的筛选,但要实现那个,之前你得先给明细数据增加一个唯一的序列号。从接触Excel开始我就认识高级筛选,但显然除了是老师要求必须得那么干,我平时是不会用到的。我会对多个条件进行筛选,但那都只是单条件筛选的叠加,这个做法在实际工作中更常用。有了filter函数后,筛选又可以玩出新花样了,实在让人很兴奋。不过兴奋归兴奋,filter是Offcie 365的新函数,Office 2019有没有都是个问题,反正Offcie 2016是无论如何都没有的了。之前我还担心了半天Win 7下的Offcie 365会不会给我增加,因为自从微软停止支持Win 7以后,Win 7上的Offcie 365只会进行安全更新。如果是系统性能不支持,新功能更新不上去也就算了,但如果系统是支持的,只是因为微软要强迫你放弃Win 7,放弃老电脑,必须得买他们的新硬件、新软件,这样就太霸道了不是吗!filter这个函数能在Win 7的Offcie 365上使用,一定程度上我觉得是运气。我能使用,但如果我把文件发给别人,他们没有这个高级别的Offcie,还是会撞板。从前我觉得Offcie版本的不同对我来说绝大多数时候都只是版式上的改变,其实功能还是大都不变,所以我才会一直使用Offce 2003直到Offcie 365(当时对应的是Offcie 2016)。之前我之所以没有欲求,是因为新版本Offcie有什么我不知道,我不知道都增加了什么,怎么会对那些内容感兴趣呢?!

人知道得多了,就会有种冲动想知道得更多。这种与生俱来的冲动我都说不上到底算不算是递归。

过去的4月,已经有3拨审计的过来(前3拨,只完成了1拨),明天还会有第4拨。我不紧张,顶多是把纸质材料从已经归档的盒子里拿出来,排一下序,电子版也从已归档的地方拷贝出来整理一下。该干的我从前都已经做完了,没有可慌的。我的同事也不觉得他们有什么可慌,但检查过程中,他们的流程漏洞百出,为什么他们应该做的事都没做?为什么这般整居然没人知道?没人觉得不妥?没人要求他们必须改?懒惰得有个限度,当懒惰到达连最基本的逻辑都无法保证,这就太说不过去了!

我一直在严防死守,但原来别人不是……

2019-07
16

看书自学,提升技能

By xrspook @ 8:58:29 归类于: 烂日记

第一次接触O’REILLY的head first系列的Java书本。已经不记得那本书我是从哪里买的了。当时我想学Java,网上的教程说那本书很不错,于是我就买回来了。不知道是那本书太高端了,还是我太低端,一开始的时候挺爽,但看着看着我就觉得自己跟不上那个进度。虽然我已经觉得自己非常努力,但是那些叫我动脑筋的练习题我几乎回答不出来。如果不看答案,那是想到天荒地老估计都得不出答案。看那本书需要具备相当优秀的逻辑水平,现在回想起来,那不过是用判断和循环不断搭配而已。在冥思苦想用Excel VBA出了一些小程序满足我的日常需要以后,现在倒过来看,觉得head,first那本书的Java题目,的确有难度,但却不至于让我落入到当年那种困苦的程度。当年因为觉得自己实在无药可救,所以我换了一本入门的书。因为第一本高端,换的那本低端一点,所以看第二本的时候我有种豁然开朗的感觉,前面的部分几乎可以一目十行地飞快前进。但到达一定程度,我就没看下去了,因为当时刚好碰上我换了份工作,所以很多时间需要用在重新上手上,我再没有那么多时间去继续自己的兴趣了。因为工作迫切需要我提升Excel技能。于是Java那本低端一点的书我没继续看下去,取而代之我开始Excel三剑客,它们分别是数据透视表,函数,以及VBA。

我首先看完的是数据透视表,函数看了一部分,VBA现在算是看完了。个人感觉数据透视表那本是我看得最酣畅淋漓的,我从中学到了很多,但具体你要我一个部分一个部分介绍,我说不出来,但是你给我份工作,我可以融会贯通。我买回来的那套书基于的是Excel 2013,当时我是用2003边看边实操,很多功能都做不到。现在我用的是Office 365,对应的版本应该是Excel 2019,2019和2013比起来,又多了一些高端的功能,从前那些只是试验性质的东西现在已经成为了2019的标配。在数据透视表方面,的确可以使用一些高端的功能了,但是要完成我的日常工作,通常来说,用2003的层次就可以了。接下来我看的那本是Excel的函数公式,这本书我只看的很少的一部分,因为我觉得与其说那本书是用来看的,不如说那本书是一本手册,是当你有困惑的时候去查阅的。因为里面的内容实在太多。普通人也不可能把所有函数的应用都了如指掌。对我来说,处理数据我最熟手的招数是数据透视表。函数部分有一些我知道它能实现某些功能,但具体要怎么折腾,需要试验一下。我觉得函数和数据透视表虽然有些东西二者都可以实现,但在数据汇总计算方面,数据透视表显然人性化很多。但是数据透视表很难进行数据进行提取,又或者把无序的东西归一。函数高手估计可以实现所有数据透视表的功能。如果把函数比作英语等级考试,估计能做到那个的人已经到达专八以上了,而对一般人来说,四级已经不容易。我觉得自己在函数方面,不过是中等的四级水平而已,而且是还没到可以参加口语考试的那种。之所以我没有非常努力地去学习函数,是因为暂时我还没有需要非常努力的动力。

还有很多东西很好玩,我想接触,我想学习。我觉得在外人眼里,貌似不成章法却能很好解决问题的,是最高的境界。那估计就是《笑傲江湖》里,独孤九剑的精髓——无招胜有招,但实际上那又不是真正的无招,因为招数已经和身体融为一体,到达了随心所欲的层次。

2018-11
20

xlsx与xlsb

By xrspook @ 9:26:05 归类于: 烂日记

昨天我把平时都要更新的大型数据文件都从xls转变为xlsb。之前的那个文件没有删掉,而是把它记下最后的日期,放到某个地方,今天开始在新的文件里更新数据。到昨天为止,这个月坚果云的使用量是899MB。经过这样的数据转换以后,理论上,单位每天更新的数据应该不会超过5MB,除非有特殊情况,比如说要写一个比较大型的报告之类的,而里面又有很多图。如果Excel表格里面有很多图,估计就没办法缩小体积了吧。Excel可以在后面加个b缩小体积,那么Word可不可以也这么干呢?真的能把图片压缩吗?估计今天我得研究一下。格式转换的操作我是在Office 2003上面完成的,当然这必须得装一个转换插件才能正常运行,我顺便在WPS 2019上测试,打开xlsb文件没问题。我也把那个东西发给了在用WPS 2016的同事,她打开也没有问题。最后我在我的新笔记本电脑上也试着打开一下,同样没有问题,当我把xls文件转变为xlsx文件,在新的笔记本电脑上进行各种复制,结果发现数据透视表没有绝对相对引用的问题。也不知道是前天还是昨天我看到这么一条消息说Office 2016推荐的系统版本是Win10,几乎可以说,那个东西是Win10的定制版本,而Win7和Win8推荐的Office系统是2007或2010。于是这也就容易理解为什么我新笔记本电脑上的Office 2016没有数据透视表绝对引用的问题,但是在Win7上面哪一台机都有问题。不只是2016,2013也存在同样的问题。所以得出这么一个结论,如果要顺畅地使用2016,我的系统最好用Win10。估计这不是Office补丁补丁的问题,它们是配套使用的,虽然Win7和Win10都有32位和64位两种系统,但鬼知道Win10在Win7的基础上又改动了些什么。Office 2016之所以出现绝对引用地址的问题,是Windows的office模板那里有毛病。我不知道笔记本上的预装Windows以及office系统是怎么装上去的,估计不是人手一台一台来,但显然他们装上去的步骤是一个整套的流程,是一体的。现在卖的笔记本电脑基本上都是正版的家庭版Win10外加家庭版的Office2016。虽然现在最新的office应该是2019,但是微软最推荐你使用的是Office365。显然,买笔记本电脑的人估计不会愿意每年都给一笔费用使用Office365,所以2016就算是个比较稳定靠谱的选择。之前我已经听同学说过她的一些同事有些人用Office 2016没问题,但有些人有问题,我觉得估计不是软件版本的差异,而是他们Windows系统的差异,因为有些人用的Win7,而有些人用的Win10。

今天我之所以选择xlsb,而不选择更通用的xlsx是因为我知道xlsx文件在2016上用数据透视表,有可能出现绝对引用的问题,但现在显然在我唯一一台装了2016的电脑上没有问题。我需要把它换回来吗?其实没这个必要,因为xlsb文件的体积大概只有xlsx的一半。b和x的区别在于,b是二进制的工作簿,在一些软件上打不开,在没有安装office的前提下,x文件你还可以改它的后缀,改成zip文件,然后解压浏览里面的东西。x文件的通用性显然更强。但对我来说,我是不装office会死星人,所以这根本不成问题。b结尾的文件一般软件打不开,所以一定程度上是不是二进制的工作簿安全性更好呢?而之所以一个体积比另外一个大,是因为x文件里除了数据本身还有各种各样的xml格式。

微软这个博大精深的东西,即便我愿意花钱买2016,但只要我的Windows系统还是win7结果还是会死得很惨,所以想花钱也不能随便花。

2018-11
19

xls变xlsb

By xrspook @ 10:24:57 归类于: 烂日记

这个月我突然发现一个很惊恐的现象,我的坚果云的1GB免费上传流量几乎爆掉了,为什么会这样呢?这一个月下来,米叔的东西是有点多,但是我整个文件夹都只有不到300MB,不可能会发生这种情况,而我每天都进行更新的就只有单位的统计数据的东西了。理论上坚果云是增量同步的,所以如果是同一个文件,我在里面新增了东西就同步那些,旧的东西不会再给我同步,但实际上,周末经过两天的观察,我发现情况不是这样的。每天我都会增加十几MB的上传数据,但显然我每天都加进去的东西不可能那么多,每天我加进去的东西顶多几MB而已。为什么会有几倍甚至十几倍的差别呢?昨天晚上我终于发现了原因!因为实际上它并没有传说中的那么神奇,坚果云直接把我更新过的文件重新上传覆盖上去了,不管那个文件里面之前有没有我已经存储过的内容。于是呢,这就让我比较惊恐了,因为我每天都要更新的文件里面有几个文件是MB级的,最大的那个甚至接近9MB,如果每天我都要更新数据,更新的文件达到15MB也就没什么奇怪的了。以每天15MB计算,一个月30天,即便我什么东西都不往里面添,450MB是跑走不掉。我该怎么解决这个问题呢?

这些数据文件绝大多数都是Excel数据表,我用的系统是Office 2003,所以文件是xls。以前我就发现用2007以上的xlsx更大大能节省空间,至于为什么我不知道。之所以仍然选择老版本,一定程度是因为我觉得用的习惯,而另一方面是因为我也曾经试过用Office 2013或者2016,结果发现他们的数据透视表有严重的绝对引用问题。我不知道那个东西在经过一轮又一轮的升级以后有没有得到改善,但显然我今年早几个月做测试的时候,那还相当糟糕,出来的东西完全不是我想要的。幸好那是年头,我只是改了几个数据表而已。据说这是因为xlsx看上去是一个Excel文件,但实际上是一个压缩文件,核心是xml所以它的体积要比传统的xls小起码一半,尤其是但文件里有缓存数据库的时候。xml不是微软自己的东西,有人曾经调侃,在2007版本以上出现的那个xml的绝对引用问题是临时工搞出来的,微软还没有完全吃透那个东西,就把它用在数据里面了。但是,据说如果用的是xlsb,就没有那个烦恼,虽然那个跟xlsx是同一代的产品,但是xlsb是微软自创的二进制的数据表,所以没那么多毛病。用xls保存文件大小是8.5MB,如果用x1sx,大小是二点多,如果用xlsb。文件就只需要一点多。这就意味着,那个东西能做到接近八倍的压缩,所以,如果平时我每天有15MB的数据量,经过这么一压缩,就会只剩下几个MB而已,一个月下来,那些东西顶多200MB就包住了。之前我一直觉得没什么问题是因为单位的数据量远远没有现在这么多,而另外一个情况是我一直很相信坚果云,我觉得xls是很普通的文件,增量同步应该没什么问题的,但显然,他们只是检测了文件有没有变化,如果有变化就整个换掉。到底什么文件上他们才可以做到增量同步呢?难道只能是txt文件吗?如果那样的话就实在太恐怖了。我还要测试一下在新版本的Office 2016环境下,是不是真的用xlsb就没有绝对引用的问题。xlsb对使用office软件的人一点问题都没有,但是如果对方使用的是WPS,非常有可能他们就打不开文件了。之所以这样是因为之前已经说过,那是微软自创的二进制模式,WPS没办法攻克这个也很正常。如果真的这样,我也就只能把只是我自己使用的文件转格式,而发给别人的文件还是用原来的样子。

之前我从来没试过坚果云单月超上传流量,但现在单位的数据真的把我逼上绝路了。

© 2004 - 2026 我的天 | Theme by xrspook | Power by WordPress