Excel 操作指南
保留源列宽
目的:复制表格时,保持表格列宽格式相同
尽量不要合并单元格
- 通过筛选之后,合并的单元格无法进行复制
- 跨行合并的数据可能影响筛选的结果
统计数据出现的次数
1 | =IF(A2<>A1, COUNTIF(A:A, A2), "") |
为什么第 6 行和第 7 行单元格为空呢:通过 IF 函数进行判断,上下两行内容相同,所以显示为空
统计不同种类的数据
1 | =IF(COUNTIF($A$2:A2,A2)=1,MAX($B$1:B1)+1,"") |
1 | % 判断某一行的数据在整列当中是否为第一次出现 |
如上图所示,第 6,7,9 行都为空值,能不能让这些行都带上编号呢:
1 | =IF(COUNTIF($A$2:A2,A2)=1,MAX($B$1:B1)+1,VLOOKUP(A2,$A$1:B1,2,FALSE)) |
第 6,7,9 行之所以为空值,是因为第二行中第一次出现了该数据,因此只需查询到第一次出现数据的第二列编号即可,而 VLOOKUP 函数会自动从上往下进行查找,就能正确的找到第二列的编号。
复制工作表
按住 Ctrl 键拖动即可复制工作表
查找工作表当中的合并单元格
需求:从别人接手的工作表,很可能包含大量合并的单元格,需要将它们取消合并
1、查找,进入 格式
选择
2、勾选 合并单元格
宏绑定快捷键
如下图所示,不过不支持 Ctrl+ 数字键,那么就换成字母吧
单元格是否存在某些内容
例如,若 E 列中存在 PH值
、PH
、PH50%
这些字样,那么在 I 列中将其提取出来
1 | =IF(ISNUMBER(SEARCH("pH", E4)), E4, "") |
为什么要用 ISNUMBER 函数:因为 SEARCH 函数在未找到指定的字符串时会返回错误值,而不是返回 0。
比如没有找到相应的文字,那么 search 返回 false,isnumber 函数返回 false,最终就返回空值。如果找到了相应的文字,那么 search 返回对应的索引,isnumber 函数返回 true,最终返回
进一步地,将一个词的条件变为多个词,需求如下:
只要单元格存在 氢氰酸
、总氰
、游离氢氰酸
、游离丙酮
、硫酸丙酮
、氰醇
这几个词中的某一个,那么就判断正确(即需要在其他列中将其提取出),否则为空
1 | =IF( |
最小公倍数
1 | =LCM(B2:B5) |
合并单元格 - 宏程序
假设三个单元格都存在数据,将这连续的三个单元格合并时,默认只会保留左上角单元格的数据,其他单元格数据丢失。而如果有如下需求:需要将多个单元格数据都保留下来
1 | Sub 合并选定单元格() |
拆解合并的单元格(并填充内容)
例如第 145 和 146 行,按照常规拆解单元格流程,拆解后只有 145 行保留数据,146 行数据为空。
需求如下:如何保持每一格单元格的内容和拆解前的保持一致
1 | Sub 宏1() |
计算单元格中字符出现的次数
1 | =LEN(A2) - LEN(SUBSTITUTE(A2, "k", "")) |
公式思路:先计算单元格中总的字符长度,然后将要找到字符替换为空字符,那么『总长度』减去『替换为空字符后的长度』,就是你要找到字符的个数
SUBSTITUTE:将 "k"
替换为空字符 ""
ROUNDUP 函数
参考资料:Fetching Title#mrdb
朝着远离 0(零)的方向将数字进行向上舍入:
- ROUNDUP 的行为与 ROUND 相似,所不同的是它始终将数字进行向上舍入
- 如果 num_digits 大于 0(零),则将数字向上舍入到指定的小数位数。
- 如果 num_digits 为 0,则将数字向上舍入到最接近的整数。
- 如果 num_digits 小于 0,则将数字向上舍入到小数点左边的相应位数。
1 | =ROUNDUP(3.001,0) —> 4 |
多列数据合并(自动添加分隔符)
未完待续…