Excel精英培训网

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

[已解决]修改这个函数如果超过100列了就显示不正常了

[复制链接]
发表于 2013-8-30 16:50 | 显示全部楼层 |阅读模式
好像小于100列都是正常显示的。但我感觉超过100列就显示不正确,是不是代码的范围问题,帮忙修改下。
最佳答案
2013-8-31 08:35
  1. =IFERROR(INDIRECT(TEXT(MOD(SMALL(IF(FREQUENCY(IF($EN$301:$EW$550=$EN$302:$EW$551,IF($EN$302:$EW$551<>"",COLUMN($EN:$EW)*1000+ROW($1:$250))),TRANSPOSE(IF($EN$301:$EW$550<>$EN$302:$EW$551,COLUMN($EN:$EW)*1000+ROW($1:$250),)))>2,ROW($1:$2501)/1%%%%+MOD(ROW($1000:$3500),250)/1%%+3010000+INT(ROW($1000:$3500)/250)),COLUMN(A1)),10^8)+140,"r0c0000"),),"")
复制代码
改了下能得出结果

=IFERROR(INDIRECT(TEXT(MOD(SMALL(IF(FREQUENCY(IF($EN$301:$EW$550=$EN$302:$EW$551,IF($EN$302:$EW$551<>"",COLUMN($EN:$EW)*1000+ROW($1:$250))),TRANSPOSE(IF($EN$301:$EW$550<>$EN$302:$EW$551,COLUMN($EN:$EW)*1000+ROW($1:$250),)))>2,ROW($1:$2501)/1%%%%+MOD(ROW($1000:$3500),250)/1%%+3010000+INT(ROW($1000:$3500)/250)),COLUMN(A1)),10^8)+140,"r0c0000"),),"")

增加红色部分
10^6改为10^8
原先的100列加到行里去了

然后原先的公式TEXT第2参数为R0C00
C00   列也就2位数最多

你自己试试好了··

修改这个函数如果超过100列了就显示不正常了.rar

28.4 KB, 下载次数: 18

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-8-30 18:03 | 显示全部楼层
``你应该说明嘛
公式反而可以去掉

弄个那么长的公式
让人看
然后没说明
我觉得很多人会先下了
然后开起来点一下
直接关掉然后直接删除

吃饭了先··
回复

使用道具 举报

 楼主| 发表于 2013-8-30 18:17 | 显示全部楼层
opqazxc 发表于 2013-8-30 18:03
``你应该说明嘛
公式反而可以去掉

这个就是给你修改的。之前就是你做得解答。也只有你来解决。
回复

使用道具 举报

发表于 2013-8-30 18:35 | 显示全部楼层
``尽管我写的
好吧
我也不知这是要什么结果

好像小于100列都是正常显示的。但我感觉超过100列就显示不正确,是不是代码的范围问题,帮忙修改下。
是要改成100列以上也能直接用?
你就提供10列的数据??
回复

使用道具 举报

发表于 2013-8-30 18:41 | 显示全部楼层
晚点再看``
回复

使用道具 举报

 楼主| 发表于 2013-8-30 18:51 | 显示全部楼层
opqazxc 发表于 2013-8-30 18:41
晚点再看``

不是指数据源的列数超过100列。而是这个数据源如果在A到CV,也就是1到100列内,是可以用这个函数来引用的。但超过CV列后就不能正常显示了。
回复

使用道具 举报

 楼主| 发表于 2013-8-30 19:12 | 显示全部楼层
opqazxc 发表于 2013-8-30 18:41
晚点再看``

意思就是竖着连续同值出现的次数。附图片

1.png
2.png
3.png
回复

使用道具 举报

发表于 2013-8-31 08:35 | 显示全部楼层    本楼为最佳答案   
  1. =IFERROR(INDIRECT(TEXT(MOD(SMALL(IF(FREQUENCY(IF($EN$301:$EW$550=$EN$302:$EW$551,IF($EN$302:$EW$551<>"",COLUMN($EN:$EW)*1000+ROW($1:$250))),TRANSPOSE(IF($EN$301:$EW$550<>$EN$302:$EW$551,COLUMN($EN:$EW)*1000+ROW($1:$250),)))>2,ROW($1:$2501)/1%%%%+MOD(ROW($1000:$3500),250)/1%%+3010000+INT(ROW($1000:$3500)/250)),COLUMN(A1)),10^8)+140,"r0c0000"),),"")
复制代码
改了下能得出结果

=IFERROR(INDIRECT(TEXT(MOD(SMALL(IF(FREQUENCY(IF($EN$301:$EW$550=$EN$302:$EW$551,IF($EN$302:$EW$551<>"",COLUMN($EN:$EW)*1000+ROW($1:$250))),TRANSPOSE(IF($EN$301:$EW$550<>$EN$302:$EW$551,COLUMN($EN:$EW)*1000+ROW($1:$250),)))>2,ROW($1:$2501)/1%%%%+MOD(ROW($1000:$3500),250)/1%%+3010000+INT(ROW($1000:$3500)/250)),COLUMN(A1)),10^8)+140,"r0c0000"),),"")

增加红色部分
10^6改为10^8
原先的100列加到行里去了

然后原先的公式TEXT第2参数为R0C00
C00   列也就2位数最多

你自己试试好了··

评分

参与人数 1 +3 收起 理由
superle! + 3 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-8-31 08:39 | 显示全部楼层
opqazxc 发表于 2013-8-31 08:35
改了下能得出结果

=IFERROR(INDIRECT(TEXT(MOD(SMALL(IF(FREQUENCY(IF($EN$301:$EW$550=$EN$302:$EW$551 ...

那现在100列内的是采用原公式好,还是采用现在的新公式好?

回复

使用道具 举报

发表于 2013-8-31 08:51 | 显示全部楼层
运算速度一样吧

反正你有100列以上就都弄第2个吧
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-29 09:25 , Processed in 0.729315 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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