-1

虽然学习,但我在 VBA 或 python 编程方面没有经验。我有一个 excel 文件,其中包含一个ab/c/defg/0123/456可变长度(文本和数字)字符串中的一个非常具体的字符串。变量字符串始终位于电子邮件的主题标题中。出于目的,我已将其提取为 excel。

我想要完成的是ab/c/defg/0123/456在 excel 文件中查找字符串并将该特定字符串复制到同一 excel 中同一行中的空单元格中。如果未找到该字符串,则单元格将留空。为了使其更复杂,字符串也可能显示为ab/c/defg/**123**/456反斜杠或正斜杠。

在 excel 中,函数 split、MID、left、right 没有帮助,因为字符串可能随机出现在字符串中:类似于以下内容:

第 1 行:ab/c/defg/0123/456 blablabla 03/10/2012 - 05/11/2012 - blablabla。
第 2 行:blablabla 04/10/2012 - 01/11/2012 - blablabla blablabla,blablabla blablabla ab/c/defg/0123/456。
第 3 行:blablabla ab/c/defg/0123/456 blablabla
第 4 行:blablalbla 13/10/2012 - blablabla
第 5 行:blablalbla;blablabla blablablablablabla blablabla ab/c/defg/0123/456 - blablabla 1234456

结果将是: cd
row1: ab/c/defg/0123/456 blablabla 03/10/2012 - 05/11/2012 - blablabla。ab/c/defg/0123/456
等......
第 4 行第 d 列将比没有值/空

该文件包含大约。9000 行,但在分析不同的邮箱/excel 文件时可能会更大。

有什么想法吗?

4

1 回答 1

0

首先,可能最好的想法是使用Range.Find方法。如果找到字符串,它会为您提供信息,并返回找到字符串的范围/单元格(如果是的话)。我警告你的 - 小心额外的参数,这些.Find方法可能不需要,但似乎你最终必须使用它们。

这是方法描述的链接。您会发现其中的示例非常有用。另外还要检查.Range.FindNext属性。

您可以对宏记录器进行一些体验,因为它完全支持.Find功能。

如果您最终知道工作表中的查找结果在哪个单元格中,那么您可以很容易地找到该行中的任何单元格,例如。从右边看时,第一个空单元格是这样得到的:

Dim rngFound as Range 
'if rngFound represent cell where is your string
'then first free cell from the right:
Dim rngFreeThisRow as Range
Set rngFreeThisRow = Cells(rngFound.Row, Columns.Count).End(xlToLeft).Offset(0,1)

对斜杠和反斜杠的备注。您可能需要多次搜索,并且每次都必须更改“要搜索的数据”,例如:

  1. 在第一步你可以搜索ab/c/defg/123/456(精确匹配)
  2. 如果在下一步找不到,您可以搜索Replace("ab/c/defg/123/456". "/", "\")
  3. *但是,如果您的字符串中有任何类型的模式,使用替换标记(如and )可能会更好,?例如。ab?c?defg?123?456或者 ab?c?defg?*123?456
  4. 等等...
于 2013-03-28T23:09:27.193 回答