[从产品角度学EXCEL 03]-单元格的秘密

这是《从产品角度学EXCEL》系列——单元格的秘密。html

前言请看:编程

0 为何要关注EXCEL的本质网页爬虫

1 EXCEL是怎样运做的微信

2 EXCEL里的树形结构编程语言

或者你能够去微信公众号@尾巴说数 得到连载目录。函数

本文仅由尾巴本人发布于特定网站。不接受任何无受权转载,如需转载,请先联系我,很是感谢。post


在讲了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里找到这样一行代码:

<c r='A1' s='1'><v>110002</v></c>

可是若是咱们经过改变其格式的方法,把这个单元格改成文本格式,那么咱们只会在sheet1里找到这样的一串数字:

<c r='A1' t='s'><v>0</v></c>

在这里,110002的字样不见了,取而代之的是一个编号,以及一个t=’s’的样式。而咱们再回到Sharestring.xml里,就会发现110002被储存在了里面,刚刚提到的那个编号,正是这个编号的一部分。

从excel对数字和文本的不一样储存方式,咱们就要意识到说,在excel里这两个东西真的不是一回事情。这是从底层的逻辑就决定了的功能和性质的不同

2 数值的“模板”——论数字格式

文本与数字不是一回事情,那么咱们经常看到的日期、科学计数法、货币、百分比等等,又是怎么一回事情呢?

要调这些格式,excel2007之后的版本,是从开始->数字->格式下滑框里选中的,就以下图同样。

1462460060216.png

固然,咱们也能够在右键->设置单元格格式->数字里面,自由地选择咱们的定义。

1462460406632.png

咱们很容易会发现,里面的几种格式之间是能够互相转换的。譬如数字40001,你把它改成日期后,就变成了2009/7/7,再改成百分比的话,就成了4000100.00%。无论你怎么改,它的值都是40001,并不会改变。

事实上,在这些格式里,文本是惟一一个不能与其余格式自由转换的东西。它储存方式自然就与数字不同,在处理起来,天然也格格不入。

那除了文本之外的那些数字格式,又是什么东西呢?

咱们继续回归到xml文件。

假设咱们在F2单元格键入了2009/7/7,即为日期格式;再在I2单元格键入0.55%,即为百分比格式。

回归到worksheet文件夹里的xml文件,你会看到如下两行代码:

<c r="F2" s="12"><v>40002</v></c>
<c r="I2" s="13"><v>5.4999999999999997E-3</v></c>

跟不少人想象的不同,在xml文件里咱们并不会直接去存储一个“2009/7/7”和“0.55%”的数字,取而代之的是一个40002,和一个浮点数。

excel会经过“s”(style)来控制这个单元格的样式,而这个样式控制了咱们在单元格里,是看到日期,仍是百分比,仍是其余数字格式。

这个样式咱们后面还会继续展开讲的,不过咱们能够先得出一个总结是:

excel的单元格里,只存储文本和数字两种类型。而对于数字,却有不一样的展示方法。这些展示方法被统一叫作数字格式。
因为数字格式与数字的存储在两个地方,因此咱们对单元格数字的操做,与其样式没有关系。
由此咱们能够说,数字格式是数字的“模板”和“衣服”,它不影响数字的值


补充知识:

一、在众多编程语言里,也是须要严格区分数值和字符的区别的。甚至有些编程语言,在一开始就要界定清楚,变量是整数型的int,仍是字符型的string。
excel既然是编程出来的,它也维持了这个一向的比例。

二、对于数值,计算机能够直接用二进制十进制十六进制去记录它和表达它,可是对于字符串,咱们须要用额外的编码进行记录。
经常使用的编码如UTF-8,ANSI等等。
像xml文件的表头,总会有这么一段指明编码:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
字符串的编码问题,尤为是涉及中文的部分,是咱们平常处理文本、网页爬虫、数据清洗中,最头疼的一点。稍稍不留意,就会出现报错。

三、excel在导入外部数据时,咱们能够选择不一样的编码类型,以下截图:

1462461693477.png 
这个编码类型基本针对的是文本。若是选错,就是乱码乱码乱码


本章节excel常问问题:

Excel教程身份证问题一次全搞定

Excel文件打开时全部的单元格格式都变成了日期格式

如何在EXCEL中快速实现文本和数值的相互转换

欢迎各位在评论里补充大家看完本章后,想到的相关问题,按期补充上去:)

欢迎扫码关注个人微信公众号

 

logo.png

相关文章
相关标签/搜索