我必须更改9000多个提供商记录的日期/时间格式。我是vba的新手,不知道该怎么做,因为有超过100种不同的供应商办公时间。
我想过使用一个按钮来创建一个填充正确信息的新列,但我不确定这是不是正确的路径。我考虑过使用If语句,但我知道由于办公时间的不同,将会有超过100个If语句。
在Excel中生成的当前日期/时间格式为:
M 8:30 AM-5:30 PM
T 8:30 AM-5:30 PM
W 8:30 AM-5:30 PM
R 8:30 AM-5:30 PM
F 8:30 AM-5:30 PM我需要将其转换为M-F 8:30 AM-5:30 PM
下面是另一个例子
M 7:30 AM-11:00 PM
T 7:30 AM-11:00 PM
W 7:30 AM-11:00 PM
R 7:30 AM-11:00 PM
F 7:30 AM-11:00 PM
S 8:00 AM-9:00 PM期望的最终结果:
M-F 7:30 AM - 11:00 PM; SA 8:00 AM - 9:00 PM发布于 2019-05-30 22:32:20
如果Excel解决方案可能适合您,也许您可以根据自己的需要进行调整:

备注:要使此公式起作用:
公式是:=IF(IF(TRIM(MID(A2;3;99))=TRIM(MID(A1;3;99));"";ROW())="";"";LEFT(INDEX($A:$A;IF(TRIM(MID(A2;3;99))=TRIM(MID(A1;3;99));"";ROW()));1)&"-"&LEFT(INDEX($A:$A;IF(TRIM(MID(A2;3;99))=TRIM(MID(A1;3;99));"";ROW())+COUNTIFS($A$2:$A$12;"*"&TRIM(MID(A2;3;99))&"*")-1);1)&" "&TRIM(MID(A2;3;99)))
正如你可能在图片中注意到的,最后的结果并不符合你的需求(你发布了SA 8:00 AM - 9:00 PM,而我的公式得到了S-S 8:00 AM-9:00 PM,因为老实说,我不知道那个A是从哪里来的。
由于公式的复杂性,我已经将文件上传到我的Gdrive,在文件中你会发现两张表:一张在一个单元格中,另一张在几列中,模拟一步一步的解决方案,以防你有兴趣检查它背后的想法。
https://drive.google.com/open?id=1pmrpPqMWwtFtdzt3-lQoK5npd_JeQs0m
试着让它适应你的需求。
发布于 2019-05-31 00:49:44
步骤
1用空格替换(C列,公式= space (B6,"-",“"))
2提取星期几(列D,公式=TIMEVALUE(TRIM(MID(SUBSTITUTE(C6,“",REPT(”",LEN(C6)),(1)*LEN(C6)+1,LEN(C6)&“"&TRIM(MID(SUBSTITUTE(C6,”",REPT(“",LEN(C6),(2)*LEN(C6)+1,LEN(C6)
3提取时间开始(E列,公式=TIMEVALUE(TRIM(MID(SUBSTITUTE(C25,“",REPT(”",LEN(C25),(1)*LEN(C25)+1,LEN(C25))&“"&TRIM(MID(SUBSTITUTE(C25,”",REPT(“",LEN(C25),(2)*LEN(C25)+1,LEN(C25)
4提取时间结束(具有公式的列f =TIMEVALUE(TRIM(MID(SUBSTITUTE(C25,“",REPT(”",LEN(C25),(3)*LEN(C25)+1,LEN(C25))&“"&TRIM(MID(SUBSTITUTE(C25,”",REPT(“",LEN(C25),(4)*LEN(C25)+1,LEN(C25)
5确定是否包含星期六(D32,公式= if (COUNTIF(D25:D30,"S"),"Yes",“No”)
7获取最大时间结束时间(公式为F32 = Max (F25:F29))
9获取最终结果(B34 with Formula =IF(D32="No",("M-F "&TEXT(E32,"hh:mm AM/PM")&"-"&TEXT(F32,"hh:mm AM/PM")),("M-F "&TEXT(E32,"hh:mm AM/PM")&"-"&TEXT(F32,"hh:mm AM/PM")&(",SA "&TEXT(VLOOKUP("S",D25:F30,2,FALSE) ),"hh:mm AM/PM")&"-"&TEXT(VLOOKUP("S",D25:F30,3,FALSE),"hh:mm AM/PM“))
假设
1所有原始文本的格式都相同
3您正在数组中查找最晚的结束时间
备注
1这些是excel中的步骤。
2“这些公式很复杂,但很灵活,如果原始数据发生变化,可以用作模板。”
3您可以组合不同的公式来创建单个摘录,但它们将变得相当难以阅读
4就我个人而言,我会在excel中这样做,这样我就可以检查结果(并寻找不符合要求的模式),这样我就可以根据需要进行调整。
6这是我第一次在这个论坛上回答问题,所以我希望这是有意义的。
XLSX Example我想附加一个电子表格,但我看不出有什么办法。论坛上可能不允许这样做。
https://stackoverflow.com/questions/56379382
复制相似问题