Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2272|回复: 8

[已解决]一个新的高手问题请教大家。。。。(高手速进!!!)

[复制链接]
发表于 2012-3-1 09:34 | 显示全部楼层 |阅读模式
本帖最后由 ksjbt 于 2012-3-1 18:00 编辑

我的问题是这样的:

有一个这样的字符串A010203040506070605040302  (长度为4的倍数)
2个子串XY           04   05
要得到:A串以4个字符为单位进行分组,统计每小组含(XY)的次数,最后分别
求出含(XY)0次、1次、2次的总组数。

处理步骤如下:
字串A       010203040506070605040302                         子串X 04        子串Y 05
1、分组:    0102  0304  0506  0706  0504  0302
2、统计各组出现XY的次数:
0102:      不含04 或 05                    次数:0
0304:      含 04                                 次数:1
0506:      含 05                                 次数:1
0706:      不含04 或 05                    次数:0
0504:      含 04 和 05                       次数:2
0302:      不含04 或 05                    次数:0
3、得到含(XY)0次、1次、2次的总组数
含(X或Y)0次的总组数:  1+1+1 = 3
含(X或Y)1次的总组数:  1+1= 2
含(X或Y)2次的总组数:  1=1
4、我所要的结果就是:  3     2     1
(我的要求是只能用公式,不能用VBA或启用辅助列。。。高手问题,谢谢解答!!!   
我感觉数组公式肯定可以办到,只是我是菜鸟,自己搞不定。。。。谢谢帮助!!!)另外,我的字符串A长度是随机的,麻烦写公式的时候别写死长度。。
一个新的问题请教大家(请求高手解答!!!).rar (85.67 KB, 下载次数: 3)
发表于 2012-3-1 09:46 | 显示全部楼层
一个新的问题请教大家(请求高手解答!!!).zip (85.36 KB, 下载次数: 6)

评分

参与人数 1 +1 收起 理由
ksjbt + 1 谢谢 蝶。舞 !!!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-3-1 09:55 | 显示全部楼层
蝶·舞 发表于 2012-3-1 09:46

谢谢 蝶·舞 大大 ,我的字符串A的长度是随机的,麻烦再修改下哈。。。谢谢!!!
回复

使用道具 举报

发表于 2012-3-1 10:19 | 显示全部楼层    本楼为最佳答案   
=MMULT(COLUMN(A:AD)^0,--(MMULT(2-LEN(SUBSTITUTE(MID(D2,4*ROW(1:30)-3,4),A2:B2,""))/2,{1;1})={0,1,2}))
回复

使用道具 举报

 楼主| 发表于 2012-3-1 11:14 | 显示全部楼层
本帖最后由 ksjbt 于 2012-3-1 12:42 编辑
faliming7 发表于 2012-3-1 10:19
=MMULT(COLUMN(A:AD)^0,--(MMULT(2-LEN(SUBSTITUTE(MID(D2,4*ROW(1:30)-3,4),A2:B2,""))/2,{1;1})={0,1,2}) ...

谢谢版版的公式。。。我要是有6个子串(子串X,Y,X1,Y1,X2,Y2)呢,你的公式要怎么改???
改成:
=mmult(column(a:ad)^0,--(mmult(2-len(substitute(mid(g2,4*row(1:30)-3,4),a2:f2,""))/2,{1;1;1;1;1;1})={0,1,2}))  ?

但我验证了一下,这样不对,3个组数想加得不到总组数。。。麻烦版版帮我改下。。。谢谢!!!


另外,我把a:ad改为了a:bz; 1:30 改成了1:78,这样没问题吧?我需要调整总长度。。。还有,你的公式在删除行或插入列会出错,请问要怎么解决。。 修改后(组数对不上来).rar (3.76 KB, 下载次数: 3)
回复

使用道具 举报

 楼主| 发表于 2012-3-1 15:07 | 显示全部楼层
急求解决啊。。。。一直在线在等。。。谢谢!!!
回复

使用道具 举报

发表于 2012-3-1 15:26 | 显示全部楼层
你F2单元格09不是文本,你应该把它弄成文本再看看

评分

参与人数 1 +1 收起 理由
ksjbt + 1 谢谢老大,函数很给力!!!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2012-3-1 15:43 | 显示全部楼层
本帖最后由 ksjbt 于 2012-3-1 16:12 编辑
faliming7 发表于 2012-3-1 15:26
你F2单元格09不是文本,你应该把它弄成文本再看看

已经用TEXT函数解决。。。谢谢版版老大!!!
最后函数:
=mmult(column(a:bz)^0,--(mmult(2-len(substitute(mid(g2,4*row(1:78)-3,4),text(a2:f2,"00"),""))/2,{1;1;1;1;1;1})={0,1,2}))
回复

使用道具 举报

发表于 2012-3-1 16:48 | 显示全部楼层
你的A2:F2数据不一致,因此要用TEXT函数,那个09不是文本,如果一致都是文本,就不用这个TEXT函数了,你可以试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 10:20 , Processed in 0.347913 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表