ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助截取字段

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-1-5 00:33 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 言明 于 2023-1-5 08:32 编辑

求助截取字段,,
单元格有完整的物流信息,其中安排出车会出现1-3次,,需截取时间最早的一次
因是重复字段,,,公式有些繁琐还请老师帮忙看看vba可否实现。现实环境数据量大概每天3万左右。。。谢谢



祝大家新年快乐,,2023大
谢谢版主通过审核并建议

A列是完整物流信息,以时间为节点,显示物流操作动作,如某营业部完成收寄,到处理中心,到航班信息,最终是签收或者退回等

其中
到安排出车(主要截取该操作动作的时间节点)注:安排出车至少出现1次,可能会出现3次,原因是收件人有可能不在家,但最多安排三次,需要截取时间最早的安排出车节点。

物流完整信息,是通过软件抓取系统数据,,,

谢谢诸位老师
B2-B9是达到的效果(B9以下空白单元格没有操作)D列是请教老师的公式,但有些特殊情况未能全部额截取。


求助v2.zip

20.12 KB, 下载次数: 16

求助

TA的精华主题

TA的得分主题

发表于 2023-1-5 07:39 | 显示全部楼层
建议楼主结合附件内容,具体描述下处理原则

TA的精华主题

TA的得分主题

发表于 2023-1-5 10:40 | 显示全部楼层
你抓取的时候能不能事件升序呢,这样的话就简单多了,现在也能处理就是繁琐一点。
image.png

TA的精华主题

TA的得分主题

发表于 2023-1-5 11:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
字符串可以直接比较。
360截图20230105111546990.jpg

求助v2.rar

30.41 KB, 下载次数: 12

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-5 12:13 | 显示全部楼层
Sub test()
    If MsgBox("运行代码需要一定时间;" & Chr(10) & "继续提取请按确定(结束会有提示),退出按取消。", 33, "提示信息") = vbCancel Then Exit Sub
    T = Timer
    isall = 1 '提取方式参数,当值为1时,提取所有日期时间,其它任意值提取最早日期时间
    Application.ScreenUpdating = False
    Sheet1.Columns("D:F").ClearContents
    For i = 2 To Sheet1.Range("A" & Rows.Count).End(xlUp).Row
        stri = Sheet1.Range("A" & i)
        k = 4
        Do
            dip = InStr(stri, Chr(10))
            If dip > 0 Then
                st1 = Mid(stri, 1, dip)
                If InStr(st1, "安排出车") > 0 Then
                    sj = FormatDateTime(Mid(st1, 1, 19))
                    With Sheet1.Cells(i, k)
                        .Value = sj
                        .NumberFormatLocal = "yyyy/m/d h:mm:ss" '显示格式
                        .Columns.AutoFit '自动列宽
                    End With
                    If isall = 1 Then k = k + 1
                End If
                stri = Mid(stri, dip + 1, Len(stri))
            Else
                If Len(stri) > 0 Then
                    If InStr(stri, "安排出车") > 0 Then
                        sj = Mid(stri, 1, 19)
                        With Sheet1.Cells(i, k)
                            .Value = sj
                            .NumberFormatLocal = "yyyy/m/d h:mm:ss" '显示格式
                            .Columns.AutoFit '自动列宽
                        End With
                    End If
                    stri = ""
                End If
            End If
            If stri = "" Then Exit Do
        Loop
    Next
    Application.ScreenUpdating = True
    MsgBox "一共用时:" & Format(Timer - T, "#0.00") & " 秒", , "提取完毕!"
End Sub

求助v2.zip

29.18 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-5 12:57 | 显示全部楼层
代码写好,却发现求助帖没有了。

QQ图片20230105125552.png

求助v2.zip

29.22 KB, 下载次数: 8

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-1-5 13:14 | 显示全部楼层
第一次发的看不见,再发一次

求助v2.zip

29.18 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2023-1-5 15:27 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-1-5 15:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 22:48 , Processed in 0.037821 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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