Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3929|回复: 7

[已解决]求助excel提取特殊内容的解决方式

[复制链接]
发表于 2014-6-4 15:20 | 显示全部楼层 |阅读模式
本帖最后由 335805371 于 2014-6-5 09:57 编辑

A
执行日期5.1-10.25执行
执行日趋3.30-4.30执行
待航线走向批复后执行 执行日期7.1-8.31执行
或739/319/320执行;执行日期6.1-10.25执行,自审核通过后执行



类似于这样的文本,在B列提取出以下格式
开始日期和结束日期
2014-05-01  2014-10-25
2014-03-30  2014--4-30
2014-07-01  2014-08-31
最佳答案
2014-6-5 16:38
本帖最后由 suye1010 于 2014-6-5 23:09 编辑

修改了一下烟花同学的代码,现在可以满足条件了!
G20142.zip (525.08 KB, 下载次数: 17)
47D2H%TQYL$EP~JPUBU33CU.jpg
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-6-4 15:37 | 显示全部楼层
  1. Sub demo()
  2.     Dim arr
  3.     arr = Range("a1:b" & Cells(Rows.Count, 1).End(xlUp).Row)
  4.     Dim i&
  5.     Dim objRegExp As Object, obj As Object
  6.     Set objRegExp = CreateObject("VBScript.regExp")
  7.     With objRegExp
  8.         .Global = True
  9.         .Pattern = "(\d{1,2}\.\d{1,2})\-(\d{1,2}\.\d{1,2})"
  10.         For i = 1 To UBound(arr)
  11.             If .test(arr(i, 1)) Then
  12.                 Set obj = .Execute(arr(i, 1))
  13.                 arr(i, 2) = Format(CDate(Replace(obj(0).submatches(1), ".", "/")), "yyyy-mm-dd") & " " & Format(CDate(Replace(obj(0).submatches(1), ".", "/")), "yyyy-mm-dd")
  14.             End If
  15.         Next
  16.     End With
  17.     Set objRegExp = Nothing
  18.     Range("a1").Resize(UBound(arr), 2).Value = arr
  19. End Sub
复制代码
回复

使用道具 举报

发表于 2014-6-4 15:39 | 显示全部楼层
提取年月日.rar (15.34 KB, 下载次数: 5)
回复

使用道具 举报

发表于 2014-6-4 15:48 | 显示全部楼层

  1. Sub aa()
  2.     Dim i%, arr
  3.     arr = Range("A1:A" & Range("A" & Rows.Count).End(3).Row)
  4.     For i = 1 To UBound(arr)
  5.         arr(i, 1) = Format(Replace(Split(Split(arr(i, 1), "执行日期")(1), "-")(0), ".", "-"), "yyyy-mm-dd") & " " & Format(Replace(Split(Split(Split(arr(i, 1), "执行日期")(1), "-")(1), "执行")(0), ".", "-"), "yyyy-mm-dd")
  6.     Next
  7.     [B1].Resize(UBound(arr)) = arr
  8. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-6-5 10:31 | 显示全部楼层
csmctjg 发表于 2014-6-4 15:48

如果每一列值不为空,并且都含有执行日期,用那个方法没问题,可是有的记录是空的,有的不含有执行日期就是不用过滤的数据,执行宏的时候会报错
47D2H%TQYL$EP~JPUBU33CU.jpg
回复

使用道具 举报

 楼主| 发表于 2014-6-5 11:01 | 显示全部楼层
hwc2ycy 发表于 2014-6-4 15:39

这个结果开始日期和结束日期是一样的
回复

使用道具 举报

 楼主| 发表于 2014-6-5 13:39 | 显示全部楼层
hwc2ycy 发表于 2014-6-5 11:21
你得把要求说明白,另外数据最好上传完整了,少量数据只会影响大家的判断。

文档FD19那一列是备注信息,这一列内容分以下三种情况:
(1)不含有执行日期的
(2)内容为空
(3)含有执行日期的
注:不含执行日期的和内容为空的不用管,只过滤含有执行日期的内容

注:文档中执行日期以月日形式表示:如 7.1-8.31 代表开始执行时间为:2014-07-01  结束时间为:2014-08-31
含有执行日期的字段分为以下几种形式:
   A:   待航线走向批复后执行 执行日期7.1-8.31执行
   B:   执行日期:07.01-10.28 待航线走向批复后执行 与CA3967代码共享
   C:  执行日期:02.30-04.30 & 09.01-10.23 待航线走向批复后执行 与CA3967代码共享
   D:  与MF4214 MU4837代码共享 执行日期3.30-5.8 6.16-10.25执行 或73G执行

   我想得到的结果是:
   2014-07-01 2014-08-31
   2014-07-01 2014-10-28
   2014-02-30 2014-04-30 2014-09-01 2014-10-23
   2014-03-30 2014-05-08 2014-06-16 2014-10-25

G20142.zip

487.68 KB, 下载次数: 2

回复

使用道具 举报

发表于 2014-6-5 16:38 | 显示全部楼层    本楼为最佳答案   
本帖最后由 suye1010 于 2014-6-5 23:09 编辑

修改了一下烟花同学的代码,现在可以满足条件了!
G20142.zip (525.08 KB, 下载次数: 17)
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-15 20:15 , Processed in 0.291711 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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