从Excel中parsing和连接Excel的date

记事本中有以下文本数据。 我将这些数据复制并粘贴到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: 

我需要通过Excelparsing这个文本,这样我就可以计算出某些术语出现的频率(例如IN,OUT,DENIED等),以及IN和OUT之间的某些会话需要多长时间。

我可以使用文本到列来分词到不同的单元格。 不过,我需要连接date信息。 每当有一个TIMESTAMP项时,后面的所有时间列都需要有这个date。

因此,我不希望只有[Time],而是希望时间列是[Time,Date],其中Date是最新的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? 另外,我怎样才能使用filter来实现呢?

  • 将时间之后的数据分成两列(A:B)
  • 在A和B之间插入一个新的列
  • selectB1 ,定义一个命名公式:

 LastWord *Refers to* =TRIM(RIGHT(SUBSTITUTE(Sheet3!$C1," ",REPT(" ",99)),99)) 

input这个公式:

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

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

这给你一个“真实的”date时间戳,你可以在Excel中用作date。

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

在这里输入图像说明