从文本中解析Excel中的日期和连接日期

时间:2016-09-19 19:10:49

标签: excel vba excel-vba

我在记事本中有以下文本数据。我将这些数据复制并粘贴到Excel中,每行占用一个单元格。

    12:07:33 (MLM) TIMESTAMP 8/9/2016  
    11:22:41 (MLM) OUT: 
    11:23:09 (MLM) DENIED: (Licensed number of users already reached. (-4,342:10054 ""))
    11:23:09 (MLM) OUT: 
    11:35:05 (MLM) IN: User 23112
    12:02:50 (MLM) IN:
    12:07:33 (MLM) TIMESTAMP 8/10/2016        
    12:02:50 (MLM) IN: 
    12:02:50 (MLM) IN: 
    12:05:21 (MLM) DENIED:(Licensed number of users already reached. (-4,342))
    12:05:21 (MLM) OUT:   
    12:05:25 (MLM) OUT: 
    12:07:33 (MLM) TIMESTAMP 8/11/2016
    12:11:17 (MLM) OUT: 

我需要通过Excel解析此文本,以便计算某些术语出现的频率(例如IN,OUT,DENIED等),并查看IN和OUT之间的某些会话需要多长时间。

我可以使用文本到列将术语拆分为不同的单元格。但是,我需要连接日期信息。每次有TIMESTAMP术语时,后面的所有时间列都需要具有该日期。

因此,我不希望只有[时间],而是希望时间列为[时间,日期],其中日期是最新的TIEMSTAMP条目。我希望有类似的东西:

    12:07:33, 8/10/2016 (MLM) TIMESTAMP 8/10/2016        
    12:02:50, 8/10/2016 (MLM) IN: 
    12:02:50, 8/10/2016 (MLM) IN:
    5:07:23, 8/11/2016 (MLM) TIMESTAMP 8/11/2016
    5:11:17, 8/11/2016 (MLM) OUT:      

如何编写一个函数来识别TIMESTAMP的出现位置,并将其与时间列连接,直到下一次出现TIMESTAMP?或者,我如何使用过滤器来实现这一目标?

1 个答案:

答案 0 :(得分:1)

  • 将时间分成两列(A:B)
  • 后将数据拆分
  • 在A& A之间插入一个新列乙
  • 选中B1,定义命名公式:
LastWord *Refers to*    =TRIM(RIGHT(SUBSTITUTE(Sheet3!$C1," ",REPT(" ",99)),99))

输入以下公式:

B1:  =A1+(IF(ISNUMBER(FIND("/",LastWord)),LastWord,INT(OFFSET(B1,-1,0))))

根据需要格式化。我使用hh:mm:ss, m/d/yyyy使其看起来像您的示例,但您可以使用其他格式。

这给你一个真实的"日期时间戳,可用作Excel中的日期。

但是,如果您的数据在LastWord中包含任何包含斜杠/的非日期单词,则此方法将不起作用,您将需要使用更复杂的例程。如果您的Windows区域日期设置与数据中的日期格式不同,它也将失败。

enter image description here