Excel 函数:如何判断一行字符中某个字符连续出现的次数
2014-01-17 18:29阅读:
欢迎关注 @数据挖掘学习交流网 @数据分析招聘 分享最新的数据分析领域资讯和招聘信息。
学数据分析、挖掘技术上数据挖掘学习交流网 http://www.datathinking.net
找数据分析、挖掘工作上数据分析招聘网http://www.datathinking.com
问题,数据如下,n行多列类似数据:
想用函数求出一行数据中A连续出现的最大次数?(上面的示例中结果应该是4)
思考:
现在每个字符都在不同的单元格中,不方便处理,如果是一个字符串,那么问题就转换为:一个字符串连续出现A的最大长度。也就是说我如果用find查找A
AA....AAAAAAAA,只要返回来的是数值,也就是找到了相应的字符串,那么结果就是所查找的字符串的最大长度。
第一步先把所有的字符合并成一个长的字符串,使用PHONETIC函数,需要确保0是以文本格式存放的,如果之前是数字,可以直接替换成'0,
Concatenate函数或者&也可以用,但是太麻烦了。
合并好之后就需要用数组函数去一次的查找A AA
AAA.....是否在该字符串中,然后求出查找字符串的最大长度就可以了。
结果如下:
A1放的是合并的字符串,O1是结果
函数分别如下:
=PHONETIC(B1:M1)
=MAX(IF(ISNUMBER(FIND(REPT('A',ROW(INDIRECT('a1:a'&LEN(SUBSTITUTE(A1,'0',''))))),A1,1)),ROW(INDIRECT('a1:a'&LEN(SUBSTITUTE(A1,'0','')))),0))
注:如果原始数据中除了A还有其他各种字母或者数字,也是可以处理的,也就是需要加一个步骤,先去处理掉非A的字符。
知识点:
PHONETIC
说到链接文本,可能第一个会想到Concatenate函数,不过,这个函数,大家俗称下岗函数。之所以这样说,是因为在实际操作中,很多的时候,我们都是用“&”链接前后单元格数据。
excel中phonetic函数也是用于链接文本的,更加灵活好用。
phonetic函数属于隐藏函数。下面是微软官方的解释:
简介:CONCATENATE 函数
功能:将多个文本字符串合并为一个文本字符串。
语法:CONCATENATE(text1,text2,...)
Text1, text2,...
1 到 30
个将要合并为单个文本项的文本项。这些文本项可以是文本字符串、数字或列引用。
Phonetic函数的帮助文件解释为“该函数只适用于日文版”,按理说,它不应该出现在中文版Excel中。难度phonetic函数只能用于日文链接吗?此函数不仅适宜提取日文文本字符,同样适合中文、拼音的提取链接。
下面是一个Phonetic函数的简单实例:

第一:将A1:A6区域的文本链接并实现转置效果
A10单元格输入公式:=PHONETIC(A1:A6),即可实现效果。
第二:用同样的方法,将E1:E8区域的文本链接并实现转置效果
在E10单元格输入公式:=PHONETIC(E1:E8)。
通过上面的PHONETIC实例,观察,会发现一些问题:E2单元格是错误值,E3单元格是日期,E4单元格是逻辑值,E5单元格是公式的结果,E6单元格是数值,E7单元格是时间。
PHONETIC函数会将区域引用中的逻辑值、错误值、数值、公式、日期、时间全部忽略。此特性可以很容易区分文本与结果为文本的公式。
PHONETIC函数的连接顺序:按先行后列,从左向右,由上到下的顺序连接。PHONETIC函数的优点在于连接不相邻的且区域大小不一致单元格区域时的应用。
Phonetic函数实例二:
A5=PHONETIC(A1:E3),利用PHONETIC函数按先行后列,从左向右,由上到下的顺序可以得到上图的效果。
PHONETIC函数支持定义,支持联合区域(并联、串联),最棒的是参数支持引用,这就意味着她能接受从其他函数比如index,indirect,offset等传过来的引用继续处理,极大地增强了其延展性。
indirect
excel中indirect函数,根据帮助,可以知道是返回并显示指定引用的内容。使用INDIRECT函数可引用其他工作簿的名称、工作表名称和单元格引用。
第一,indirect函数对单元格引用的两种方式。
看下图,使用indirect函数在C2、C3引用A1单元格的内容。
1、=INDIRECT('A1'),结果为C3。这种使用,简单的讲,就是将这些引用地址套上双引号,然后再传递给INDIRECT函数。
2、=INDIRECT(C1),结果为C2。解释:因为C1的值就是
'A1',在公式编辑栏,选中“C1”,然后按下F9键,计算值,可以看到变为“'A1'”,本质没变,都是对单元格引用。
上面两者的区别在于:前者是A1单元格内文本的引用,后者是引用的C1单元格内的地址引用的单元格的内容。
第二,indirect函数工作表名称的引用。
如下图所示:
如果需要在“二班”工作表,计算“一班”工作表B2:B11的成绩总和。可以使用这样的 公式:=SUM(INDIRECT('一班!B2:B11'))。解释:indirect(“工作表名!单元格区域”)
另外一种情况:
当工作表名称直接是数字的,在工作表名称两边必须添加上一对单引号。

同样的,在“2”工作表,计算“1”工作表B2:B11的成绩总和。公式为:=SUM(INDIRECT(''1'!B2:B11'))。解释:indirect(“’工作表名’!单元格区域”)
总结:如果工作表名为汉字,工作表名前后可以加上一对单引号,也可以不加。但是数字和一些特殊字符时,必须加单引号,否则不能得到正确结果。
我们在工作表命名时形成习惯尽量不要有空格和符号,这样可以不怕indirect引用忘记加单引号括起来。要么形成习惯所有indirect带工作表名引用时都用单引号将代表工作表名的字符串括起来。
第三,INDIRECT函数对工作簿引用的书写方式和细节正确写法
=INDIRECT('[工作簿名.xls]工作表表名!单元格地址')
INDIRECT函数,如果是对另一个工作簿的引用(外部引用),则那个工作簿必须被打开。如果源工作簿没有打开,函数 INDIRECT
返回错误值 #REF!。
![Excel <wbr>函数:如何判断一行字符中某个字符连续出现的次数 Excel <wbr>函数:如何判断一行字符中某个字符连续出现的次数]()