在这一章节里,我们研究excel单元格的外在表现,如字体、颜色、边框、合并单元格等。
基本上,每一个单元格的格式都是可以自定义定制的。
我们可以随心所欲 对单元格进行合并、调色、设置大小,就像在一个画布上自由作画一般。
而这种高度可定制性,也即是excel的魅力所在。
我们接下来要做的,就是透过现象看本质,通过对单元格外观的研究,来串联起我们对单元格的理解。
在上一章节里,我们在excel里输入了一个日期2009/7/7和一个百分数0.55%。
在阅读excel xml源文件里,我们发现它们还是以数值的形式储存在单元格里,只是“s”引用的数字不对。
400025.4999999999999997E-3
事实上,我们可以把这个s理解为单元格的样式(style)。
这个单元格里引用的12/13,其实就是代指styles.xml文件里,第12/13个xf元素。
第十二个xf--日期第十三个xf-日期
我们可以看到,在这个xf元素里,规定了字体fontID、数值格式numFmtId、边框borderId、对齐方式applyAlignment等等的属性。
而正是这些元素,构成了我们看到的单元格的外观。
同时有趣的是,在这个xf元素里,fontID、numFmtId、borderId等等,也是用数字去引用各个相应元素的顺序。我们可以在同一个styles.xml文件里,找到如:
等等的元素。xf里的font=’0’, font=’1’,其实也就是在引用这些元素的顺序而已。
形象一点来说,对于单元格的代码关系,我们可以画出这样的一个关系图来:
如果单独解读styles.xml的结构,我们又可以画出这样的一个关系图来:
事实上,excel就是靠着这种引用的关系,把各个独立的元素串通在了一起,形成一个松散又有联系的产品整体。
在过了一下excel单元格的xml原理以后,我们回到excel的基本界面,来看看工程师是怎样布局与分布这些功能块的。
我们在excel的“开始”菜单里,可以看到关于单元格格式的大部分功能:
这些功能,大体上是与excel styles.xml里,所展示的单元格样式组合相吻合。
对于刚接触excel界面的小白来说,去尝试给单元格变个颜色、居中对齐、合并单元格、换行等等,都是非常容易的一件事情。这些东西,完完整整得都列在了excel的开始界面里,我们只要耐得下心来去与这些功能块沟通,就能轻松做出像下图这样,有多种样式的单元格。
这种通过“阅读”excel的产品界面,从而理解这个产品的设计,是从结果导向理解产品设计原理的最佳渠道。
一般做网页设计、软件开发等等,都是从最终结果出发,在设计出原型后,再逐个逐个模块进行开发组装的。
软件的操作模型,往往凝聚了最多的设计精华。
因此,在学习excel时,学会“阅读”excel的产品界面,可以达到事半功倍的效率。
但是需要注意的是,在读熟excel表面的功能布局以后,适当了解一下它底层的原理,能够更好的理解日常操作中会遇到的问题
1)为什么我们可以选择性粘贴单元格的数值or带格式粘贴?
在我们复制单元格的值到另一个单元格时,我们可以选择要粘贴的方式,如只粘贴数值,只粘贴公式,或者数值公式一起粘贴。
在这里,它是把单元格拆分为了:值、公式、格式、批注等基本部分。这就类似于我们通过xml看到的, value, formula, styles等。
就如上文所说,这些部件在excel文件的xml代码层是分开储存,它们共同构成了单元格。
选择性粘贴,其实就是在告诉电脑,在这一次复制与粘贴过程中,我们是否需要把单元格格式引用的数值也复制过来,是否需要引用特定序列的批注,以及是否只复制里面特定格式的特定部件(如只复制边框,或者只复制合并条件等等)
理解了单元格是”装配“而成的,我们就能比较好的理解“选择性粘贴”了。
2)什么是“格式刷”?
当我们理解选择性粘贴是让我们选择复制一个单元格的哪个组件后,我们也能比较容易理解什么是单元格的“格式刷”。
本质上,格式刷就是把一个单元格引用的styles数字,原封不动得赋予另一个单元格。通过修改s=’0’,实现格式的变动,而不影响单元格的值。
3)在同一个窗口打开的excel,共同分享了一套样式
对于excel2010/2013的用户,通过开始菜单打开新的excel窗口,可以实现各个excel之间是互相独立,即使一个excel死机了,另外一个也能保持正常的状态。 (细节请见微软的文章,方法二: https://support.microsoft.com/zh-cn/kb/2227598 )
然而我们会发现,通过这种方式打开的独立的excel窗口,当我们在其中一个excel里复制若干单元格到另一个excel时,我们往往只能复制单元格的“值”,而无法把格式/公式一起复制过去。
事实上,当我们在同一个窗口打开若干个excel时,我们实际上是在计算机的某一个部分,把若干个excel的样式组合在一起阅读与排序。然而对于不同的窗 口打开的excel,因为它们之间彼此独立,样式并没有随着复制与粘贴而过去,当我们进行不同窗口之间的复制与操作时,我们其实只进行了单元格值的转变。
4)网页复制数据时,不同的粘贴速度
同理,这个可以解释如:
从word、html等等复制表格到excel时,往往要花费比较长的时间,或者只能复制值到excel里。因为excel要进行一个格式的转化,有时候由于兼容问题还失败了。
当 我们要从网页复制一个有各种javascript、脚本超链接的文本到excel单元格时,稍不注意就要花费很长时间(格式转换)。
但是若我们直接在单元 格文本框里键入文字内容,excel就默认只复制单元格的文本,不进行任何转换。速度会很快,而且不会把各种脚本都复制进来。
譬如我们从京东商品描
述页复制一整块信息:
左侧为在单元格里直接粘贴,它反映比较慢,进行了很多格式的转换。
而右侧为在文本框里直接复制网页文字,最后所有内容都集中在了一个单元格里,以纯文本的形式,速度极快。
往往当我们不想复制太多格式时,直接转为文本复制,或者直接在文本框里键入文字,是一个比较快的方法。
综上,在理解了“格式”仅仅是单元格的一个组成部分后,我们就能比较深刻地解释一些excel疑难问题。可以从产品角度学习excel了。
End.
作者:尾巴 (中国统计网特邀认证作者)
本文为中国统计网原创文章,需要转载请联系中国统计网([email protected]),转载时请注明作者及出处,并保留本文链接。