ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4622|回复: 11

[已解决] 使用FREQUENCY求最大连续个数时,如何自行找到最大个数数列的起点终点?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-9-15 22:19 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
FREQUENCY寻找开始位置.rar (1.75 KB, 下载次数: 58)
在线等。。
谢谢


该贴已经同步到 乌小饭子的微博

TA的精华主题

TA的得分主题

发表于 2014-9-15 22:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 jacky1998 于 2014-9-16 16:40 编辑
  1. =SMALL(IF(A1:A31<>A2:A32,ROW(2:32)),MATCH(MAX(FREQUENCY(ROW(1:31),IF(A1:A31<>A2:A32,ROW(1:31)))),FREQUENCY(ROW(1:31),IF(A1:A31<>A2:A32,ROW(1:31))),)-1)
复制代码
真丢人,都不知道怎么算啦。弄了个公式,对目前的结果,不知道有没有代表性。
  1. MMULT({1,-1;0,-1},-MID(MAX(FREQUENCY(ROW(1:31),(A1:A30<>A2:A31)*ROW(1:30))%+ROW(1:31)%%)-1%&1%,{3;5},2))
复制代码
  1. =MMULT({1,-1;0,-1;-1,0},-MID(LARGE(FREQUENCY(ROW(1:31),(A1:A30<>A2:A31)*ROW(1:30))%+ROW(1:31)%%,COLUMN(A:AD))&1%,{3;5},2))+{1;0;0}所有数值之频数起终点全包括 FREQUENCY寻找开始位置.rar (6.56 KB, 下载次数: 42)
复制代码
公式2
在一种情况下不会出结果,就是所有的数值都只有1 个即没有相同连续数,这时公式的起点与终点为31即计算数列之外,如果有重复连续数时,最大连续数以最后出现的那个为准。前面有相同的最大连续不予统计。实际按照公式的思路,可以得出所有连续的起点,终点,以及频数。形成内存数组。
公式3
可无误出所有结果,即使所有数的频数为1.


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-9-15 22:54 | 显示全部楼层
jacky1998 发表于 2014-9-15 22:33
真丢人,都不知道怎么算啦。弄了个公式,对目前的结果,不知道有没有代表性。

貌似不能全部适用,还在拆解中~

依旧万分感谢

TA的精华主题

TA的得分主题

发表于 2014-9-15 23:22 | 显示全部楼层
拷贝2楼老师的公式=SMALL(IF(A1:A30<>A2:A31,ROW($1:$30)),MATCH(MAX(FREQUENCY(IF(A1:A30=A2:A31,ROW($1:$30)),IF(A1:A30<>A2:A31,ROW($1:$30)))),FREQUENCY(IF(A1:A30=A2:A31,ROW($1:$30)),IF(A1:A30<>A2:A31,ROW($1:$30))),)-1)+1

TA的精华主题

TA的得分主题

发表于 2014-9-15 23:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
终点位置假设在E1:
  1. =MATCH(1,FREQUENCY(-9^9,-FREQUENCY(IF((A1:A30)>3,ROW(1:30)),IF((A1:A30)<=3,ROW(1:30),))),)-1
复制代码
起点位置:
  1. =E1-MAX(FREQUENCY(IF((A1:A30)>3,ROW(1:30)),IF((A1:A30)<=3,ROW(1:30),)))+1
复制代码

TA的精华主题

TA的得分主题

发表于 2014-9-16 00:40 | 显示全部楼层
=SMALL(IF(A1:A31<>A2:A32,ROW(2:32)),MOD(MAX(--IFERROR(FREQUENCY(ROW(1:31),IF(A1:A31<>A2:A32,ROW(1:31)))&ROW(1:31),)),10)-1)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-9-16 08:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wlc5201130 发表于 2014-9-16 00:40
=SMALL(IF(A1:A31A2:A32,ROW(2:32)),MOD(MAX(--IFERROR(FREQUENCY(ROW(1:31),IF(A1:A31A2:A32,ROW(1:31)))& ...

老师没考虑如果最长连续出现在第一段的情况。

TA的精华主题

TA的得分主题

发表于 2014-9-16 10:31 | 显示全部楼层
sw=andy 发表于 2014-9-16 08:26
老师没考虑如果最长连续出现在第一段的情况。

加个IFERROR即可
=IFERROR(SMALL(IF(A1:A31<>A2:A32,ROW(2:32)),MOD(MAX(--IFERROR(FREQUENCY(ROW(1:31),IF(A1:A31<>A2:A32,ROW(1:31)))&ROW(1:31),)),10)-1),1)

TA的精华主题

TA的得分主题

发表于 2014-9-16 14:37 | 显示全部楼层
本帖最后由 jacky1998 于 2014-9-16 16:56 编辑
乌小饭子 发表于 2014-9-15 22:54
貌似不能全部适用,还在拆解中~

依旧万分感谢
  1. =MMULT({1,-1;0,-1;-1,0},-MID(LARGE(FREQUENCY(ROW(1:31),(A1:A30<>A2:A31)*ROW(1:30))%+ROW(1:31)%%,COLUMN(A:AD))-1%&1%,{3;5},2))频数-1
复制代码
  1. =MMULT({1,-1;0,-1;-1,0},-MID(LARGE(FREQUENCY(ROW(1:31),(A1:A30<>A2:A31)*ROW(1:30))%+ROW(1:31)%%,COLUMN(A:AD))&1%,{3;5},2))+{1;0;0}频 数 FREQUENCY寻找开始位置.rar (6.56 KB, 下载次数: 25)
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2014-9-16 15:12 | 显示全部楼层
依然潇潇 发表于 2014-9-15 23:22
拷贝2楼老师的公式=SMALL(IF(A1:A30A2:A31,ROW($1:$30)),MATCH(MAX(FREQUENCY(IF(A1:A30=A2:A31,ROW($1:$30 ...

出了个最终解决方案。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-5 22:37 , Processed in 0.034443 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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