ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [第120期]最长连续优良月数[结束]

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-1-23 14:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. =TEXT(MAX(FREQUENCY(IF(B3:M3<"C",B$2:M$2),(B3:M3>"B")*B$2:M$2)),"[<6]!0")*ISNUMBER(FIND("AAA",PHONETIC(B3:M3)))
复制代码



下面几个公式作为参考:
=TEXT(MAX(MMULT(LARGE((B3:M3>"B")*B$2:M$2,ROW($1:$6)+{0,1}),{1;-1}))-1,"[>5]0;[<0]12;\0")*ISNUMBER(FIND("AAA",PHONETIC(B3:M3)))

=MAX(ISNUMBER(FIND(REPT(1,ROW($6:$12)),SUM((B3:M3<"C")*10^COLUMN(A:L))))*ROW($6:$12))*ISNUMBER(FIND("AAA",PHONETIC(B3:M3)))

=TEXT(MATCH(,0/FIND(REPT(1,ROW($1:$13)-1),SUM((B3:M3<"C")*10^COLUMN(A:L))))-1,"[<6]\0")*ISNUMBER(FIND("AAA",PHONETIC(B3:M3)))

=MAX(ISNUMBER(FIND(REPT("A",ROW($6:$12)),SUBSTITUTE(PHONETIC(B3:M3),"B","A")))*ROW($6:$12))*ISNUMBER(FIND("AAA",PHONETIC(B3:M3)))

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-1-23 22:50 | 显示全部楼层
本帖最后由 dengjq2000 于 2018-1-25 07:55 编辑

不才。
来一个长的(361):

  1. =IFERROR(IF(FIND("AAA",MID(PHONETIC(B3:M3),MATCH(1,FREQUENCY(-9^9,-FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L),))))-MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L)))),TEXT(MAX(FREQUENCY(IF(B3:M3<="B",COLUMN(A3:L3)),IF(B3:M3>"B",COLUMN(A3:L3)))),"[<6]\0"))),MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L))))),)
复制代码


234长
  1. =IFERROR(IF(FIND("AAA",MID(PHONETIC(B3:M3),FIND("BBBBBB",SUBSTITUTE(PHONETIC(B3:M3),"A","B")),MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L)))))),MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L))))),)
复制代码






再来一个短的(177长)

  1. =(COUNT(0/((COUNTIF(OFFSET(A3,,COLUMN(A:G),,6),"<C")=6)*FIND("AAA",PHONETIC(OFFSET(A3,,COLUMN(A:G),,6)))))>0)*MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L))))
复制代码


后面再例几种,只可惜都没能达到题目的字长要求。
293长:
  1. =COUNT(0/(LEN(TRIM(MID(SUBSTITUTE(SUBSTITUTE(PHONETIC(B3:M3),"C","D"),"D",REPT(" ",99)),99*COLUMN(A:G)-98,99)))>5)*FIND("AAA",TRIM(MID(SUBSTITUTE(SUBSTITUTE(PHONETIC(B3:M3),"C","D"),"D",REPT(" ",99)),99*COLUMN(A:G)-98,99))))*MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L))))
复制代码

260长:
  1. =(COUNT(0/((--MID(TEXT(SUM((B3:M3<"C")*10^(12-COLUMN(A:L))),"000000000000"),COLUMN(A:G),6)=111111)*(FIND(111,MID(TEXT(SUM((B3:M3="A")*10^(12-COLUMN(A:L))),"000000000000"),COLUMN(A:G),6)))))>0)*MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L))))
复制代码

227长:
  1. =COUNT(FIND("AAA",MID(PHONETIC(B3:M3),FIND("BBBBBB",SUBSTITUTE(PHONETIC(B3:M3),"A","B")),MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L)))))))*MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L))))
复制代码

223长:
  1. =TEXT(COUNT(FIND(222,MAX(IFERROR(--TRIM(MID(SUBSTITUTE(SUM((B3:M3<{"B";"C"})*10^(12-(COLUMN(A:L)))),"0",REPT("
  2. ",99)),99*COLUMN(A:L)-98,99)),))))*MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L)))),"[<6]\0")
复制代码

200长
  1. =(COUNT(FIND("AAA",PHONETIC(OFFSET(A3,,COLUMN(A:G),,6)))*FIND("BBBBBB",SUBSTITUTE(PHONETIC(OFFSET(A3,,COLUMN(A:G),,6)),"A","B")))>0)*MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L))))
复制代码
  1. =(COUNT(0/(FIND("AAA",PHONETIC(OFFSET(A3,,COLUMN(A:G),,6)))*("BBBBBB"=SUBSTITUTE(PHONETIC(OFFSET(A3,,COLUMN(A:G),,6)),"A","B"))))>0)*MAX(FREQUENCY(IF(B3:M3<"C",COLUMN(A:L)),IF(B3:M3>"B",COLUMN(A:L))))
复制代码





评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-1-25 18:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 猜我咯 于 2018-1-25 20:27 编辑

哈哈,猛然发现这个版块,挺有兴趣的~新手,初来乍到(感觉能满足除了那个公式长度小于150的其他条件)

O2可以写下面这个数组公式,然后往下拖就OK了
  1. =IF(MAX(FREQUENCY(IF((B3:M3="A"),COLUMN(B:M)),IF(B3:M3>"A",COLUMN(B:M))))>2,LOOKUP(MAX(FREQUENCY(IF((B3:M3<"C"),COLUMN(B:M)),IF(B3:M3>"B",COLUMN(B:M)))),{0,6,7,8,9,10,11,12}),0)
复制代码




补充内容 (2018-1-29 10:33):
只能编辑一次?我又改了了一版,147字符了~嘿嘿
=LOOKUP(IF(MAX(FREQUENCY(ROW($1:$13),(B3:M3>"A")*COLUMN($A:$L)))>3,MAX(FREQUENCY(ROW($1:$13),(B3:M3>"B")*COLUMN($A:$L)))-1,0),{0,6,7,8,9,10,11,12})

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-1-27 22:24 | 显示全部楼层
本帖最后由 太阳之子 于 2018-2-10 18:24 编辑
  1. =MAX((LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(MID(PHONETIC(B3:M3),ROW($1:$7),G$2:M$2),"AAA",1111,1),"C",),"D",))=G$2:M$2+1)*G$2:M$2)
  2. =MAX(IFERROR(LEN(SUBSTITUTE(BASE(DECIMAL(MID(PHONETIC(B3:M3),ROW($1:7),G$2:M$2),12),12),"AAA",74^8,1)),)-12,)
  3. =MAX(IF(ISERR(FIND("AAA",BASE(DECIMAL(MID(PHONETIC(B3:M3)&A2,ROW($1:7),G$2:M$2),12),12))),,G$2:M$2))
  4. =MAX(IF(ISERR(FIND("AAA",BASE(DECIMAL(MID(CONCAT(B3:M3)&A2,ROW($1:7),G$2:M$2),12),12))),,G$2:M$2))
复制代码
公式4为office365版本


评分

9

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-1-28 10:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 龙城飞将III 于 2018-1-28 11:12 编辑

还是太耿直,剩下的交给大神们解决吧,不会因为是文本格式判错吧:
  1. =TEXT(IF(MAX(FREQUENCY(COLUMN(B:N),(B3:M3>"A")*COLUMN(B:M)))<4,,MAX(FREQUENCY(COLUMN(B:N),(B3:M3>"B")*(COLUMN(B:M))))-1),"[<6]!0;0")
复制代码


又去翻了一下海鲜师叔的帖子,嗯,达到要求了:
  1. =TEXT(IF(MAX(FREQUENCY(COLUMN(B:N),(B3:M3>"A")*COLUMN(B:M)))-1<3,,MAX(FREQUENCY(COLUMN(B:N),(B3:M3>"B")*(COLUMN(B:M))))-1),"[<6]!0;0")
复制代码


为啥要舍近求远呢,太傻了我,
  1. =TEXT(IF(MAX(FREQUENCY(IF(B3:M3="A",COLUMN(B3:M3)),IF(B3:M3<>"A",COLUMN(B3:M3))))<3,,MAX(FREQUENCY(IF(B3:M3<="B",COLUMN(B3:M3)),IF(B3:M3>"B",COLUMN(B3:M3))))),"[<6]!0;0")
复制代码

先来一个:
  1. =TEXT(IF(MAX(FREQUENCY(IF(B3:M3="A",COLUMN(B3:M3)),IF(B3:M3<>"A",COLUMN(B3:M3))))<3,,MATCH(13,FIND(REPT(1,ROW($1:$12)),BASE(SUM(IF(B3:M3<="B",2^(12-COLUMN(A3:L3)))),2,12)))),"[<6]!0;0")
复制代码


评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-1-28 13:33 | 显示全部楼层
=(12-MIN(LEN(SUBSTITUTE(SUBSTITUTE(PHONETIC(B3:M3),"B","A"),REPT("A",G$2:M$2),))))*(LEN(SUBSTITUTE(PHONETIC(B3:M3),"AAA",))<=9)

点评

不知为何,竟然加了60分财富。  发表于 2018-2-12 22:11

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-2-1 08:36 | 显示全部楼层
=MAX(ISNUMBER(FIND("AAA",MID(PHONETIC(B3:M3),FIND(REPT("A",COLUMN(F:L)),SUBSTITUTE(PHONETIC(B3:M3),"B","A")),COLUMN(F:L))))*COLUMN(F:L))

评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-2-2 09:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 opqazxc 于 2018-2-10 11:07 编辑

  1. =MAX((SUBSTITUTE(SUBSTITUTE(MID(PHONETIC(B3:M3)&1,ROW($1:7),G$2:M$2),"AAA",,1),"A","B")=REPT("B",D$2:J$2))*G$2:M$2)
复制代码

  1. =IFNA(LEN(VLOOKUP("*111*",BASE(MATCH(,-FIND(BASE(ROW(A:A),3,6),CONCAT(CODE(B3:M3)-64))),{3}),1,)),)
复制代码
``




评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-2-3 15:31 | 显示全部楼层
本帖最后由 ykqrs 于 2018-2-4 08:38 编辑
  1. 又认真看了一下,好像头版这道题给我量身定做的一样,正好达标,149.
  2. =COUNT(FIND(REPT("B",15),SUBSTITUTE(SUBSTITUTE(PHONETIC(B3:M3),"AAA",REPT("B",12)),"A","B")))*MAX(FREQUENCY((B3:M3<"C")*B$2:M$2,(B3:M3>"B")*B$2:M$2))
复制代码

=IF(COUNT(FIND(REPT("B",15),SUBSTITUTE(SUBSTITUTE(PHONETIC(B3:M3),"AAA",REPT("B",12)),"A","B"))),MAX(FREQUENCY((B3:M3<"C")*B$2:M$2,(B3:M3>"B")*B$2:M$2)),)
仔细数了数,好像多了四五字

先占个位吧,想不出用公式怎么弄
  1. Sub qq()
  2. Dim reg, r%, c%, arr, i%, S$, mh, mht
  3. r = Cells(Rows.Count, 1).End(xlUp).Row
  4. Set reg = CreateObject("vbscript.regexp")
  5. Range("o3:o" & r) = ""
  6. arr = Range("b3:o" & r)
  7. With reg
  8. .Global = True
  9. .Pattern = "[AB]*?AAA[AB]*"
  10. For i = 1 To UBound(arr)
  11. For c = 1 To 12
  12. S = S & arr(i, c)
  13. Next
  14. If .Test(S) Then
  15. Set mh = .Execute(S)
  16. For Each mht In mh
  17. If Len(mht) > 5 Then arr(i, 14) = Len(mht)
  18. Next
  19. End If
  20. S = ""
  21. Next
  22. End With
  23. Range("b3:o" & r) = arr
  24. End Sub
复制代码

评分

4

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-2-3 19:37 | 显示全部楼层
本帖最后由 ykytom 于 2018-2-6 11:49 编辑

定义名称N={1,2,3,4,5,6,7,8,9,10,11,12}
O3输入
=ISNUMBER(FIND("AAA",PHONETIC(B3:M3))*FIND("BBBBBB",SUBSTITUTE(PHONETIC(B3:M3),"A","B")))*MAX(FREQUENCY(IF(B3:M3<="B",N),IF(B3:M3>"B",N))) ctrl+shift+enter下拉(138字符)

=ISNUMBER(FIND("AAA",PHONETIC(B3:M3)))*(MAX(FREQUENCY(IF(B3:M3<="B",N),IF(B3:M3>"B",N)))>=6)*MAX(FREQUENCY(IF(B3:M3<="B",N),IF(B3:M3>"B",N))) ctrl+shift+enter下拉(141字符)

=ISNUMBER(FIND("AAA",PHONETIC(B3:M3)))*(MAX(COUNTIF(OFFSET(B3,,{0,1,2,3,4,5,6},,6),"<=B"))>=6)*MAX(FREQUENCY(IF(B3:M3<="B",N),IF(B3:M3>"B",N))) ctrl+shift+enter下拉(143字符,将{0,1,2,3,4,5,6}定义一下名称,可减至129字符)
不定义名称
=ISNUMBER(FIND("AAA",PHONETIC(B3:M3))*FIND("BBBBBB",SUBSTITUTE(PHONETIC(B3:M3),"A","B")))*MAX(FREQUENCY(IF(B3:M3<="B",COLUMN(B:M)),IF(B3:M3>"B",COLUMN(B:M)))) ctrl+shift+enter下拉(158字符,超过150了)
不定义名称
=COUNT(FIND("AAA",PHONETIC(B3:M3)))*(MAX(COUNTIF(OFFSET(A3:F3,,ROW($1:$7)),"<C"))=6)*MAX(FREQUENCY((B3:M3<="B")*COLUMN(B:M),(B3:M3>"B")*COLUMN(B:M))) ctrl+shift+enter下拉(149字符,总算搞定)
将上公式中常量数组定义为名称 N={1,2,3,4,5,6,7,8,9,10,11,12}   M={1,2,3,4,5,6,7}
=COUNT(FIND("AAA",PHONETIC(B3:M3)))*(MAX(COUNTIF(OFFSET(A3:F3,,M),"<=B"))=6)*MAX(FREQUENCY((B3:M3<="B")*N,(B3:M3>"B")*N)) ctrl+shift+enter下拉(121字符,暂时只能到这了)
将上面的"<=B"改为"<C",又能少一个字符
=COUNT(FIND("AAA",PHONETIC(B3:M3)))*(MAX(COUNTIF(OFFSET(A3:F3,,M),"<C"))=6)*MAX(FREQUENCY((B3:M3<="B")*N,(B3:M3>"B")*N)) ctrl+shift+enter下拉(120字符)

评分

2

查看全部评分

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

本版积分规则

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

GMT+8, 2024-5-2 12:13 , Processed in 0.055075 second(s), 20 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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