ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_126][已结]监控“异常”情况连续统计

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-9-18 15:03 | 显示全部楼层
数学题,玩矩阵,已经发送短信。(89字符)
  1. =MAX((MMULT(-(ROW($1:1)>=ROW()-TRANSPOSE(ROW($1:1))),-(A$2:K2<>""))=ROW($1:1))*ROW($1:1))
复制代码
思路与countif是一样的,只是用mmult来代替,这个方版的mmult函数中介绍过这种方法,在内存数组中有countif所无法比拟的优势,就题目而言,countif更快,同时mmult函数对运算个数也是有限定的,不过绝对可以应付比题目中更多数据,字符数也没太多优势。

[ 本帖最后由 冻豆腐 于 2010-9-21 09:13 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-9-19 09:05 | 显示全部楼层
99字符,已发送短消息

换了一种思路,87字符
  1. =MAX((MMULT(-(ROW($1:1)+TRANSPOSE(ROW($2:2))>ROW()),-(A$2:K2=0))=0)*ROW($1:1))
复制代码
按照大头的时间截止,楼主可惜了,思路同fangjianp一样,简化的更好。

[ 本帖最后由 冻豆腐 于 2010-9-21 09:19 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-20 18:09 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

题目截止!

占位贴,终止本次竞赛。
以后的参赛者不再参加评分。

请版主公布大家的答案,也可在E友“占位贴”直接评分。

TA的精华主题

TA的得分主题

发表于 2010-9-20 21:20 | 显示全部楼层
是题目截止了吗?我还说今晚上补一个77字符的数组公式。
既然截止了,就直接贴出来了。M2
=MAX((MMULT(-(ROW($1:1)+TRANSPOSE(ROW($2:2))>ROW()),-(A$2:K2=0))=0)*ROW($1:1))


针对本例来一个69字符的公式:在最近的第二次连续不大于9个的情况
=MAX(MMULT(-(ROW($1:1)+TRANSPOSE(ROW($2:2))>ROW()),(A$2:K2=0)*9-1),0)

[ 本帖最后由 leeyong 于 2010-9-21 09:00 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-9-21 08:36 | 显示全部楼层
我的答案。。。。
=MAX((SUBTOTAL(3,OFFSET(A2,,COLUMN(A:K)-1,-ROW($1:1)))=ROW($1:1))*ROW($1:1))
=MAX(ROW(A1)-MOD((SMALL((A$2:K2="")*ROW($1:1)+COLUMN(A:K)/1%,ROW($1:$11)*ROW(A1))),100))

请大家看看所有答案,有没有什么问题。
欢迎大家参与讨论、评判。
总体的评分规则是:

      80字(包括80字,公式长度包括等号)以内评 2分技术
      80~100评 1分技术
      不合要求者给予适当财富。

========================================================

[ 本帖最后由 wangg913 于 2010-9-21 08:46 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-9-21 09:22 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这题思路简单,从下往上计数,大家实现的方法各有不同,条条大路通罗马。
有错误的话及时通知我,贴错的和评错的,我先保留短信3天,过时将删除,见谅。
我的方法也是用countif来处理。
  1. =MAX((COUNTIF(OFFSET(A2,,COLUMN(A:K)-1,-ROW($1:1)),"")=0)*ROW($1:1))
复制代码

[ 本帖最后由 冻豆腐 于 2010-9-21 09:28 编辑 ]

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2010-9-21 10:10 | 显示全部楼层
原帖由 冻豆腐 于 2010-9-21 09:22 发表
这题思路简单,从下往上计数,大家实现的方法各有不同,条条大路通罗马。
有错误的话及时通知我,贴错的和评错的,我先保留短信3天,过时将删除,见谅。
我的方法也是用countif来处理。=MAX((COUNTIF(OFFSET(A2,,C ...


本人愚钝,有一点不甚了解,OFFSET的第四、第五参数不是只能为正数吗,为什么此处,第四参数可以为-ROW($1:1),如果可以为负,是如何引用的呢?

TA的精华主题

TA的得分主题

发表于 2010-9-21 10:16 | 显示全部楼层
第四参数可以为-ROW($1:1),这里的意思是往上取1行,正数是往下取1行

TA的精华主题

TA的得分主题

发表于 2010-9-21 10:35 | 显示全部楼层
原帖由 wangyuhu 于 2010-9-18 11:11 发表
85字符
已经发短信给版主和头哥。
越学越觉得自己水平太差,想了2天了::L
----
可以减一个字符,84字符=MAX(ROW()-LEN(MMULT(IF(TRANSPOSE(A$2:K2)="",10^TRANSPOSE(ROW($1:1)),),ROW($1:1)^0)))

公式下拉超过20行后看看结果。

TA的精华主题

TA的得分主题

发表于 2010-9-21 10:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 sunbin200388 于 2010-9-17 18:04 发表
=MAX((COUNTIF(OFFSET(A3,-ROW($1:1),COLUMN(A:K)-1,ROW($1:1)),"")=0)*ROW($1:1))


同版主提問 下拉超過多行時會出錯

另 若超過連續16個異常 亦出錯

更正:小弟公式輸入錯誤 謹以致歉

[ 本帖最后由 piny 于 2010-9-21 11:15 编辑 ]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 02:30 , Processed in 0.041424 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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