2007-08
30

这一篇是扫盲用的,主要讲解了几个最常用的函数IF、AND、OR、COUNT、COUNTA、COUNTIF和SUM, 会用的同学就可以跳过了。以后会逐渐讲解其他函数的应用。

1. 逻辑判断

逻辑判断所用的函数不多,IF、AND、OR三个就足以应付日常工作了。

IF函数可以用来转换值,如将1和0转换为OK和NG:

=IF(A1=1,"OK","NG")

与AND和OR组合使用可以判断多个条件,如判断是否是周末:

=IF(OR(WEEKDAY(A1)=0, WEEKDAY(A1)=6),"周末","工作日")

2. 统计数量的COUNT、COUNTA、COUNTIF

COUNT和COUNTA统计对象不同,COUNTA统计所有非空单元格的数量(包括出错的单元格), COUNT仅统计看起来像数字的单元格。

COUNTIF则可以添加搜索条件,这个特性可以用来做统计。如

=COUNTIF(F:F,"OK")     统计F列中OK的个数
=COUNTIF(F:F,"NG")     统计F列中NG的个数

3. 求和的SUM

这个函数简单得不能再简单了:

=SUM(A10:A254)         对A10~A254的范围求和

没了。别看Excel函数成百上千,常用的就这几个。充其量再加上其他几个信息函数, 如求日期的DATE、YEAR、MONTH、DAY、NOW、WEEKDAY,数值计算的FLOOR、INT、MOD、ROUND, 字符串操作的CHAR、LEFT、RIGHT、MID(具体使用方法参见帮助), 几乎可以应付全部的日常应用。

下面举几个例子来说明这些函数的应用。

1. 测试用例。一般测试用例的表格会是这样:

ABCDEF
1编号类别测试内容确认内容结果测试时间
21界面单击新建按钮建立新文档OK8/27
32界面单击保存按钮保存文档OK8/27
32界面单击另存为钮打开保存对话框NG8/27

那么统计OK和NG的个数就分别用

=COUNTIF(E:E,"OK")     统计OK个数
=COUNTIF(E:E,"NG")     统计NG个数

如果测试用例分成好几个工作表,那么可以在最前面加一个统计用的工作表,并用SUM求出所有用例的状况。

2. 日历。这个日历是用在项目进度管理上的,格式类似于下面这种横向的日历。

8月
1234567891011

可按以下格式输入:

ABCDEFG
18/1=A1+1=B1+1............
2=MONTH(A1)=IF(MONTH(B1)=MONTH(A1), "",MONTH(B1)...............
3=DAY(A1)=DAY(B1)...............
4=MID("日一二三四五六",WEEKDAY(A1),1)..................

然后隐藏掉第一行即可。


2008-2-14更新 回答读者妮妮的问题,讲解一下VLOOKUP函数的用法。

VLOOKUP用于查找信息,更确切地说,它用来“翻译”信息。比如员工名单上有员工号和姓名的对应关系, 那么给出一个员工号的列表,就可以通过VLOOKUP将其“翻译”成姓名列表。先来看个例子:

ABCD
1排行姓名排行姓名
21柯镇恶3=VLOOKUP(C2,$A$2:$B$8,2)
32朱聪3=VLOOKUP(C3,$A$2:$B$8,2)
43韩宝驹4=VLOOKUP(C4,$A$2:$B$8,2)
54南希仁7=VLOOKUP(C5,$A$2:$B$8,2)
65张阿生
76全金发
87韩小莹

这个表的$A$2:$B$8区域为参考数据(原始对应关系),C列为需要翻译的原始数据,D列为翻译结果。 具体的结果大家可以实际放到Excel里面执行一下。

VLOOKUP有三个参数,分别如下:

VLOOKUP(原始数据, 参考数据, 搜索结果在参考数据中的列位置)

Excel会在参考数据的第一列中搜索原始数据(上例中,在$A$2:$B$8的第一列即$A$2:$A$8中搜索原始数据C2), 找到后,返回第三个参数——列位置所对应的数据(上例中,在$A$2:$A$8中找到与C2相等的3之后, 返回3所对应的第2列——韩宝驹,这个“第2列”即为第三个参数)。

那么找不到时怎么办?其实VLOOKUP还有第四个参数,值为TRUE或FALSE,默认为TRUE。 取值TRUE时,VLOOKUP会返回不大于原始数据的最小值所对应的结果,例如=VLOOKUP(2.5,$A$2:$B$8,2,TRUE)会返回“朱聪” (朱聪的“2”为不大于2.5的最大值)。 取值为FALSE时,VLOOKUP会返回#N/A。

通常在处理字符串时,大多情况下希望在找不到时返回错误或空串。 这时可以为VLOOKUP加上第四个参数FALSE,再用ISNA函数将#N/A转换为空串。如:

[D2]=VLOOKUP(C2,$A$2:$B$8,2,FALSE)
[D3]=IF(ISNA(D2),"",D2)


2007-08
29

网上有很多关于如何制作漂亮的幻灯片的教程,而对Excel的美化则寥寥无几。 实际上Excel不仅仅是一个电子表格软件,它的单元格容易控制样式,操作方便, 因此使用Excel制作仅供阅读的电子文档也十分合适。 这就要求文档制作者必须懂得一些基本技巧,以制作出赏心悦目的电子文档来。

下面是我制作Excel格式电子文档时的一些经验,分享给大家。 希望大家都能够制作出漂亮的文档。

阅读全文 »

2007-07
22

今天介绍Excel的一个非常有趣(有时也有用)的功能:放大镜,它能将工作表上的任意区域放大缩小或者改变形状。

方法是,先选中区域,然后按住Shift键单击编辑菜单,选择粘贴图片链接,被选定的区域就会被当作图片粘贴进来, 然后你可以随意改变它的大小,如下图所示:

Excel放大镜

对源区域的任何修改都会即时反映到图片中,俨然就是个放大镜。它甚至可以放大源区域中的图形和图片:

Excel放大镜

那么这个功能有什么用呢?比如当你做了一张极其复杂的表格,想写一份说明文档教给别人如何使用时, 就可以利用这个功能了。



2007-05
23

1. 行列转置。选择一片区域复制,然后在要粘贴的地方选择编辑->选择性粘贴, 勾选转置,你会发现行变成了列,列变成了行。记住它的快捷键:选中,Ctrl-C, 单击目的地,Alt-E, s, Alt-E,单击确定。

2. 公式转化成数值。有时使用一排公式算出结果后,想要删除原数据,但又要保留结果, 则可以先选中计算结果,复制,原地不动进行编辑->选择性粘贴,选择数值后确定。 键盘快捷方式:Ctrl-C,Alt-E,s,v,回车。

3. CSV转Excel。网页上的CSV如何快速输入到Excel中?先保存成.csv文件再用Excel打开, 不过太麻烦。应该直接复制所有内容,打开Excel,编辑->选择性粘贴,选文本,确定, 然后单击粘贴区域右下方的粘贴图标(如下图),选择使用文本导入向导, 适当选择即可。

excel-tips-02.png

4. 隐藏工作表。就像隐藏行和列一样,选择格式->工作表->隐藏,即可将当前显示的工作表隐藏起来。 一些常量值、列表数据、计算中的临时变量等,都可以放在一个临时工作表中, 制作完成后将临时工作表隐藏起来,就不会影响表格美观。 反过来,当你分析别人做的表格时发现引用了“不存在”的工作表, 试试格式->工作表->取消隐藏也许会有发现。

5. 给复杂的引用定义名称。选择你要引用的单元格或范围,然后插入->名称->定义, 即可为其定义一个简短的名称,以后在公式中就不必写成完整的“工作簿!单元格范围”的形式。

6. 多人共同编辑。选择工具->共享工作簿...,勾选其中的复选框,确定, 然后将你的Excel表格共享(通过Windows的共享功能)。别人就可以与你一同编辑表格, 每次保存时数据会自动合并。

7. 折叠部分行或列。选中你要折叠的几行,选择数据->组及分级显示->组合, 即可将选中的行折叠,如下图。

excel-tips-01.png

8. 输入提示,如下图的效果。方法是数据->有效性...,在输入信息标签页中设置。

excel-tips-03.png


2007-02
07

Excel默认不支持Unix格式时间戳,这在导入数据时十分不便。可以用以下公式将时间戳转换成Excel格式的时间:

=(x+8*3600)/86400+70*365+19

其中x为时间戳的单元格,8*3600中的8为中国的时区。然后将公式单元格设置为日期时间格式即可。转换结果如下图:

excel-timestamp.png

这个公式的原理:Excel的日期实际上是序列值,它以1900-1-1为1,每过一天序列值加1。 而Unix时间戳是从1970-1-1 0:00:00 UTC开始到现在经过的秒数。用x表示时间戳,可得到换算公式:

x+8*3600                    当前时区的时间(秒)
(x+8*3600)/86400            转换单位为天
(x+8*3600)/86400+70*365     加上1900到1970这七十年
(x+8*3600)/86400+70*365+19  闰年多出来的天数

细心的话你会发现,1900年到1970年共是17个闰年,考虑到Excel将1900-1-1当作1,那么公式最后应该加18才对, 为什么要加19?这是Excel中的一个bug——1900年也被当作闰年,因此应当再多加一天。

另外要注意,在Excel的工具->选项->重新计算中,有个1904年日期系统,如果勾选这个选项,上面的公式应当将70改为66,即

=(x+8*3600)/86400+66*365+19


2007-02
07

今天在解决一个Excel问题时发现Excel中居然有1900年2月29日这一天。众所周知1900年是平年。没想到Excel中还会有这样的bug,真是开眼了。

来看看如何重现这个bug:首先新建一个工作表,在某个单元格输入1900/2/20,然后设置适当的日期格式,然后复制序列,即可发现序列中居然包含1900年2月29日这一天。这个问题会影响到1900/1/1到1900/3/1之间的日期计算和星期计算。

excel-bug.png

微软的官方说明中提到了这个bug,据说是为了某些程序的兼容性问题。可能这个问题是Lotus 1-2-3的bug,微软当年为了跟Lotus 1-2-3抢占市场就做了个完全兼容的Excel,从而把这个bug也一起继承了过来。



2006-08
31

在Excel中经常利用折线图分析数据。但是我们有时需要将两个取值范围相差很大的数据画在同一张折线图中,例如下图的情况:

excel_log_axis_01.png

可以看出,列A的数据范围是 100-300,而列B的数据范围是 0-10,导致折线图中列B的折线聚集在折线图的最下方,很难看清其变化。这时可以进行以下操作:

  • 右键单击Y轴,选择坐标轴格式
  • 选择刻度选项卡,勾选对数刻度选项,确定。
excel_log_axis_02.png

这样,列A和列B的变化就都可以看清了。



2006-01
12

在Excel中,方向键的作用通常是移动光标到当前单元格的相邻的单元格。但偶尔会出现方向键不能移动光标,而是使得整个工作表滚动。这时看看键盘上的ScrollLock灯是不是打开了,将它关掉即可恢复正常。