gpt4 book ai didi

excel - 提取字符之间的数字并对它们进行排序

转载 作者:行者123 更新时间:2023-12-03 00:50:36 26 4
gpt4 key购买 nike

嘿,我已经花了几个小时思考解决我的问题的方法。我也搜索过网络,并找到了一些方法,但没有一个能够解决我的问题。

我有一个单元格,其数据如下所示:

(Monday@100%[00:00-24:00]);(Tuesday@100%[00:00-24:00]);(Wednesday@100%[00:00-24:00]);(Thursday@100%[00:00-24:00]);(Friday@100%[00:00-24:00]);(Saturday@100%[00:00-24:00]);(Sunday@100%[00:00-24:00])

问题是,这个字符串不一致。它也可能看起来像这样:

(Monday@125%[00:00-04:00]);(Monday@90%[04:00-08:00]);(Monday@90%[08:00-12:00]);(Monday@115%[12:00-16:00]);(Monday@120%[16:00-20:00]);(Monday@115%[20:00-24:00]);(Tuesday@125%[00:00-04:00]);(Tuesday@90%[04:00-08:00]);(Tuesday@90%[08:00-12:00]);(Tuesday@115%[12:00-16:00]);(Tuesday@120%[16:00-20:00]);(Tuesday@115%[20:00-24:00]);(Wednesday@125%[00:00-04:00]);(Wednesday@90%[04:00-08:00]);(Wednesday@90%[08:00-12:00]);(Wednesday@115%[12:00-16:00]);(Wednesday@120%[16:00-20:00]);(Wednesday@115%[20:00-24:00]);(Thursday@125%[00:00-04:00]);(Thursday@90%[04:00-08:00]);(Thursday@90%[08:00-12:00]);(Thursday@115%[12:00-16:00]);(Thursday@120%[16:00-20:00]);(Thursday@115%[20:00-24:00]);(Friday@125%[00:00-04:00]);(Friday@90%[04:00-08:00]);(Friday@90%[08:00-12:00]);(Friday@115%[12:00-16:00]);(Friday@120%[16:00-20:00]);(Friday@115%[20:00-24:00]);(Saturday@125%[00:00-04:00]);(Saturday@90%[04:00-08:00]);(Saturday@90%[08:00-12:00]);(Saturday@115%[12:00-16:00]);(Saturday@120%[16:00-20:00]);(Saturday@115%[20:00-24:00]);(Sunday@125%[00:00-04:00]);(Sunday@90%[04:00-08:00]);(Sunday@90%[08:00-12:00]);(Sunday@115%[12:00-16:00]);(Sunday@120%[16:00-20:00]);(Sunday@115%[20:00-24:00])

字符串的结构是

  • 您有星期几,后跟“@”
  • at (@) 后面有一个介于 0 到 999 之间的数字
  • 之后,括号 [] 中包含一天中的时间
  • 一天最多可以有 6 个不同的时间范围(不是更多,而是更少)
  • 每个时间范围簇由 ; 分隔并在普通括号 () 内

这就是我的起始位置。我想要的是提取 @ 和 % 之间的数字并按时间顺序列出它们(周一到周日,一天中的几个小时)。

我能够使用这个公式提取一周中每一天@和%之间的数字

=MID(B3;SEARCH("Monday@";B3)+7;SEARCH("%";B3)-SEARCH("Monday@";B3)-7)

但这仅在一周中的每一天仅被提及时才有效。

当每天有更多的时间范围时,我不知道如何让它发挥作用。感谢任何帮助。

谢谢

拉蒙

最佳答案

尝试一组迭代搜索,下一次搜索从上一个结果找到的位置开始。即:

在单元格 B6 中输入 =SEARCH("]",$B$3,B5+1)

在单元格 C6 中输入 =MID($B$3,SEARCH("(",$B$3,B5+1)+1,SEARCH("@",$B$3,B5+1)-SEARCH (“(”,$B$3,B5+1)-1)

在单元格 D6 中输入 =MID($B$3,SEARCH("[",$B$3,B5+1)+1,SEARCH("]",$B$3,B5+1)-SEARCH ("[",$B$3,B5+1)-1)

在单元格 E6 中输入 =MID($B$3,SEARCH("@",$B$3,B5+1)+1,SEARCH("%",$B$3,B5+1)-SEARCH (“@”,$B$3,B5+1)-1)

(请注意,B5 需要为空(或 0)才能正确启动)

然后您可以根据需要填写以选择每个术语。如果它们不按顺序排列,那么您可以先在 D 列然后在 C 列(先是时间,然后是日期)进行排序。

关于excel - 提取字符之间的数字并对它们进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41103599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com