非常具体地划分列

时间:2012-10-23 09:16:36

标签: regex excel vba excel-vba delimiter

我有一个列(有数千行),我想将其划分为多行。我有一些在Excel中使用正则表达式的经验,我在excel中使用分隔符有一些经验,但这个只是有点太难了..

让我举三个例子:

 - 23-12-05: For sale for 2000. 2010-09-09: Not found
 - 25-11-09: For sale for 3400. Last date found: 2010-07-08
 - 18-06-08: For sale for 5500. 21-07-09: Changed from 5500 to 4900. 16-09-09: Jumped from 4900 to 4700. 2010-02-04: Not found

大多数其他线都遵循这些结构。如何在[COLON]之前仅基于第一个符号创建新列;第二列基于第一个[COLON]和第一个[DOT]之间的符号。如何找不到文本最后一天的最后一个IF?最后:我如何使用正则表达式(或其他方式)使用“未找到”文本将最后一个日期粘贴到新列中?

相信我,我已经有一段时间了(叹气)。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

你实际上可以使用公式。

假设文本在A1中,

B1: =LEFT(A1,FIND(":",A1)-1)
C1: =MID(A1,FIND(":",A1)+1,FIND(".",A1,FIND(":",A1))-FIND(":",A1))
D1: =MID(A1,FIND(".",A1,FIND(":",A1))+1,LEN(A1))
E1: =MID(A1,FIND("Not found",A1)-12,10)

(我假设E1的日期格式没有变化)

答案 1 :(得分:0)

顺便说一下,这也适用于我,以获取单元格中的最后日期:

  

= LOOKUP(9999999999999999,FIND( “** - ** - **”,A1,ROW($ 1:$ 1024)))

这里唯一的问题是:我没有丝毫的线索,我到底在做什么。 例如,我想使用相同的代码来查找日期的首次出现。

任何人都可以向我解释这段代码吗?我为什么要搜索一个非常高的数字?这段代码中有什么能让我找到最后一次出现? “起始编号”是“行(1:1024)”是什么意思?

有人知道吗?