技术控

    今日:59| 主题:49369
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] [从产品角度学EXCEL03]——单元格的秘密

[复制链接]
柒染划破泪浅 发表于 2016-11-30 12:35:20
33 0

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这是《从产品角度学EXCEL》系列——单元格的秘密。
  前言请看:
  0 为什么要关注EXCEL的本质
  1 excel是怎样运作的
  2 EXCEL里的树形结构
  [email protected] 获得连载目录。
  本文仅由尾巴本人发布于特定网站。不接受任何无授权转载,如需转载,请先联系我,非常感谢。
  在讲了excel的树形结构之后,我们终于要进入正题,研究单元格的秘密了。
  当我们打开excel的时候,首先映入眼帘的就是一大片格子,这就是单元格。
  在excel里,单元格承担了几乎所有的存储信息的功能。
  你可以往一个单元格里填写你的名字电话,也可以把若干个单元格合并起来,就放一块信息。
  它还可以根据你的需要改变颜色,调整字体,甚至于可以输入各种计算函数,求和求匹配求重复,包罗万象。
  正因为单元格是excel的基础,我们对excel产品的研究,也是从单元格开始。这一块的内容主要涉及到以下几块知识:
  1 文本与数字不是一码事
  2 数值的“模板”——论数字格式
  3 单元格的“外套”——更广度的谈单元格格式
  4 合并只是一种“假象”
  5 单元格里最小的运算单位——函数
  1 文本与数字不是一码事

  我们先来讨论一个问题,那就是excel里的数据格式。
  对于初学excel的人,最常遇到的一个困扰是,为什么我往单元格里填入一长串数字,譬如我的身份证号码,结果出来的却是科学计数法,更过分的是,这一串数字excel还给我四舍五入了,害得我数据丢失。
  也有些人会有疑问说,我明明把很多个数字用sum来求和,怎么结果会跟实际的不一样?
  结果最后算错了数,被老板追着好一顿狠骂,偏偏我还不知道哪里错了。
  这 些问题我们在一些教程,或者搜索引擎里随便搜搜,都能得到解答——因为你该用文本的时候excel用了数字,该用数字的时候excel帮你选了文本。
  文本 是不能加减乘除的,数字大到了一定程度就自动变成科学计数法了。
  如果你查的深入一些,你还会知道,我们可以通过列转换或者text()函数,实现文本与数 字之间的互相转换。
  而在这个解答的背后,却藏着excel的一个产品逻辑:文本与数值并不是一码事。
  还记得我们上一章节详细介绍的xml树形结构吗?
  在excel里,单元格里的数字是藏在worksheet文件夹里的每一个sheet1 sheet2 xml文件里的,而文本信息,却是统一藏在xl文件夹里的Sharestring文件夹里,在sheet1 xml里再通过引用编码的形式读取和展现。
  譬如说,如果我们往单元格A1里键入一串数字110002,那么我们把这个excel解压缩以后,可以在worksheet文件夹sheet1.xml里找到这样一行代码:
   110002

  但是如果我们通过改变其格式的方法,把这个单元格改为文本格式,那么我们只会在sheet1里找到这样的一串数字:
   0

  在这里,110002的字样不见了,取而代之的是一个编号,以及一个t=’s’的样式。而我们再回到Sharestring.xml里,就会发现110002被储存在了里面,刚刚提到的那个编号,正是这个编号的一部分。
  从excel对数字和文本的不同储存方式,我们就要意识到说,在excel里这两个东西真的不是一回事情。
  这是从底层的逻辑就决定了的功能和性质的不一样。
  2 数值的“模板”——论数字格式

  文本与数字不是一回事情,那么我们常常看到的日期、科学计数法、货币、百分比等等,又是怎么一回事情呢?
  要调这些格式,excel2007以后的版本,是从开始->数字->格式下滑框里选中的,就如下图一样。
  

[从产品角度学EXCEL03]——单元格的秘密-1 (excel,EXCEL,产品,秘密,承担)

  当然,我们也可以在右键->设置单元格格式->数字里面,自由地选择我们的定义。
  


[从产品角度学EXCEL03]——单元格的秘密-2 (excel,EXCEL,产品,秘密,承担)

  我们很容易会发现,里面的几种格式之间是可以互相转换的。
  譬如数字40001,你把它改为日期后,就变成了2009/7/7,再改为百分比的话,就成了4000100.00%。
  不管你怎么改,它的值都是40001,并不会改变。
  事实上,在这些格式里,文本是唯一一个不能与其他格式自由转换的东西。
  它储存方式天然就与数字不一样,在处理起来,自然也格格不入。
  那除了文本以外的那些数字格式,又是什么东西呢?
  我们继续回归到xml文件。
  假设我们在F2单元格键入了2009/7/7,即为日期格式;再在I2单元格键入0.55%,即为百分比格式。
  回归到worksheet文件夹里的xml文件,你会看到以下两行代码:
   40002
5.4999999999999997E-3

  跟很多人想象的不一样,在xml文件里我们并不会直接去存储一个“2009/7/7”和“0.55%”的数字,取而代之的是一个40002,和一个浮点数。
  excel会通过“s”(style)来控制这个单元格的样式,而这个样式控制了我们在单元格里,是看到日期,还是百分比,还是其他数字格式。
  这个样式我们后面还会继续展开讲的,不过我们可以先得出一个总结是:
  excel的单元格里,只存储文本和数字两种类型。而对于数字,却有不同的展现方法。这些展现方法被统一叫做数字格式。
   
由于数字格式与数字的存储在两个地方,所以我们对单元格数字的操作,与其样式没有关系。  
   
由此我们可以说,数字格式是数字的“模板”和“衣服”,它不影响数字的值。
  补充知识:

  1、在众多编程语言里,也是需要严格区分数值和字符的区别的。
   甚至有些编程语言,在一开始就要界定清楚,变量是整数型的int,还是字符型的string。
excel既然是编程出来的,它也维持了这个一贯的比例。
  2、对于数值,计算机可以直接用二进制十进制十六进制去记录它和表达它,但是对于字符串,我们需要用额外的编码进行记录。
   
常用的编码如UTF-8,ANSI等等。  
   
像xml文件的表头,总会有这么一段指明编码:  
   
  
   
字符串的编码问题,尤其是涉及中文的部分,是我们日常处理文本、网页爬虫、数据清洗中,最头疼的一点。稍稍不留意,就会出现报错。
  3、excel在导入外部数据时,我们可以选择不同的编码类型,如下截图:
  

12下一页
友荐云推荐




上一篇:If you like React Native & Vue, you will like Weex
下一篇:[iOS] Swift 中的 Class 和 Structure
酷辣虫提示酷辣虫禁止发表任何与中华人民共和国法律有抵触的内容!所有内容由用户发布,并不代表酷辣虫的观点,酷辣虫无法对用户发布内容真实性提供任何的保证,请自行验证并承担风险与后果。如您有版权、违规等问题,请通过"联系我们"或"违规举报"告知我们处理。

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

© 2001-2016 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表