ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论] 划分字母区间(已结贴)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-8-19 10:02 | 显示全部楼层
  1. =MID(LEFT(A$2,SMALL(MMULT(1-ISERR(FIND(LEFT(MID(A$2,ROW($1:33)+COLUMN(A:Z),1)&0),LEFT(A$2,ROW($1:33)))),Z1:Z26+1)*33+ROW($1:33),ROW(A1))),SUM(LEN(B$1:B1))-2,33)
复制代码


03版本火车。。

image.png

评分

6

查看全部评分

TA的精华主题

TA的得分主题

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

没思路,挖下墙角
  1. =MID(LEFT(A$2,SMALL(MMULT(DDB(ROW($2:34),FIND(LEFT(MID(A$2,ROW($1:33)+COLUMN(A:Z),1)&0),A$2&0),1,1),Z1:Z26+33)+ROW($1:33),ROW(A1))),SUM(LEN(B$1:B1))-2,33)
复制代码

评分

8

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-20 09:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 丢丢表格 于 2023-8-20 21:34 编辑

你们都喜欢 历遍法??


那我也来做一个。。。。
=MID(LEFT(A$2,SMALL(MMULT(N(FIND(LEFT(MID(A$2,ROW($1:40)+COLUMN(A:Z),1)&1),A$2&1)<ROW($2:41)),Z1:Z26+77)+ROW($1:40),ROW()-1)),SUM(LEN(B$1:B1))-2,40)

评分

5

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-20 09:51 | 显示全部楼层
丢丢表格 发表于 2023-8-20 09:29
你们都喜欢 历遍法??

腻害,思路又简洁了

TA的精华主题

TA的得分主题

发表于 2023-8-20 11:37 | 显示全部楼层
本帖最后由 cinlo 于 2023-8-20 14:27 编辑
丢丢表格 发表于 2023-8-20 09:29
你们都喜欢 历遍法??

刚刚改了一下公式,发现跟老师撞车了。。。哦,还是不太一样!!!2003版本,148字符
  1. =MID(LEFT(A$2,SMALL((MMULT(-ISERR(FIND(MID(A$2,COLUMN(A:AM),1),A$2,ROW($2:40))),Z1:Z39-1)<ROW($1:39))*99+ROW($1:39),ROW(A1))),SUM(LEN(B$1:B1))-2,39)
复制代码


评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-20 12:01 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
参与一下,不知道有没有bug.

=filterxml(WEBSERVICE("http://e.anyoupin.cn/eh3/?divideString~" & A2),"/a/b");

<?php
//举例 abacbd;
//$arr[1]="zabacbd";
$strTotalLength=strlen($arr[1]);
$iMaxPosition=0;//历史字符最大位置
$newStr='';
for($i=0;$i<$strTotalLength;$i++){
//echo substr($arr[1],$i,1);
//echo strrpos($arr[1],substr($arr[1],$i,1));
$currentMax= strrpos($arr[1],substr($arr[1],$i,1));//当前字符的在字符串最大位置
if($iMaxPosition<$currentMax){//如果历史最大位置<当前最大位置,则截断产生新字符串
        if($i<=$iMaxPosition){
        //虽然,第二个字符 b的当前最大位置是5大于 历史位置最大值a的2,但是, 自身位置1小于历史位置2 则不截断
        }else{
//否则,截断到新字符串数组,清空保留的字符串       
        $arrResult[]=$newStr;
        $newStr='';
        }
        $iMaxPosition=$currentMax;//更新历史最大位置
}
        $newStr.=substr($arr[1],$i,1);
       
}
$arrResult[]=$newStr;
$out='<a><b>'.implode('</b><b>',$arrResult).'</b></a>';
//print_r($arrResult);
die($out);
Screenshot_2023-08-20-11-56-26-225_mark.via.jpg

TA的精华主题

TA的得分主题

发表于 2023-8-20 12:40 | 显示全部楼层
B1取空,B2下拉=LET(a,SUBSTITUTE($A$2,CONCAT($B$1:B1),""),
x,MID(a,1,MAX(IFERROR(FIND(LEFT(a,1),a,SEQUENCE(LEN(a))),0))),
字符,TRANSPOSE(UNIQUE(MID(x,SEQUENCE(LEN(x)),1))),
字符位置,IFERROR(FIND(字符,a,SEQUENCE(LEN(a))),0),
MID(a,1,MAX(字符位置))
)

TA的精华主题

TA的得分主题

发表于 2023-8-20 12:53 | 显示全部楼层


=LET(a,SUBSTITUTE($A$2,IF(ROW()=2,"",IF(ROW()=3,$B$2,IF(ROW()>3,CONCAT($B1:B$2)))),""),
x,MID(a,1,MAX(IFERROR(FIND(LEFT(a,1),a,SEQUENCE(LEN(a))),0))),
字符,TRANSPOSE(UNIQUE(MID(x,SEQUENCE(LEN(x)),1))),
字符位置,IFERROR(FIND(字符,a,SEQUENCE(LEN(a))),0),
rr,MID(a,1,MAX(字符位置)),rr
)

TA的精华主题

TA的得分主题

发表于 2023-8-20 16:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=EXPAND(LET(a,ROW(1:39),b,MID(A2,a,1),c,MAP(b,LAMBDA(x,XMATCH(x,b,,-1))),TEXTSPLIT(CONCAT(b&MAP(a,LAMBDA(y,IF((INDEX(c,y)>y)+(MAX(TAKE(c,y))>y),"",1)))),,1)),12,,"")
为论坛添气氛,吾东施来效颦。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-8-20 17:12 | 显示全部楼层
本帖最后由 xlllw203 于 2023-8-21 14:05 编辑

用了365也开火车,惭愧
先贴上,后面看还有没有优化空间。。。
  1. =DROP(TEXTSPLIT(CONCAT(DROP(LET(a,LEN(A2),r,MID(A2,SEQUENCE(a),1),b,FIND(r,A2),c,VSTACK(0,a+1-FIND(r,CONCAT(MID(A2,a+1-SEQUENCE(a),1)))),d,MAP(SEQUENCE(a+1),LAMBDA(x,MAX(TAKE(c,x)))),IF(b>d,1&r,r)),-1)),,1),1)
复制代码
缩短一点
  1. =TEXTSPLIT(TEXTAFTER(CONCAT(LET(a,SEQUENCE(LEN(A2)),b,MID(A2,a,1),c,MATCH(b,b,),d,VSTACK(0,XMATCH(b,b,,-1)),e,MAP(a,LAMBDA(x,MAX(TAKE(d,x)))),IF(c>e,1&b,b))),1),,1)
复制代码

再短一点
  1. =EXPAND(TEXTSPLIT(CONCAT(LET(a,ROW(1:40),b,MID(A2,a,1),IF(MATCH(b,b,)>MAP(a,LAMBDA(x,MAX(TAKE(VSTACK(0,XMATCH(b,b,,-1)),x)))),1&b,b))),,1,1),10,,"")
复制代码
套一个expand防止溢出

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-6-3 10:11 , Processed in 0.052806 second(s), 19 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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