String 在excel中查找特定字符串,复制特定字符串并复制到同一行的新单元格

String 在excel中查找特定字符串,复制特定字符串并复制到同一行的新单元格,string,excel,vba,extract,String,Excel,Vba,Extract,我不是一个有VBA或python编程经验的人,尽管我在学习。 我有一个excel文件,其中包含一个非常特定的字符串ab/c/defg/0123/456,位于一个可变长度(文本和数字)的字符串中。变量字符串始终位于电子邮件的主题标题中。出于目的,我已将其提取到excel中 我想要完成的是在excel文件中找到字符串ab/c/defg/0123/456,并将该特定字符串复制到同一excel中同一行的空单元格中。如果找不到字符串,单元格将保留为空。为使其更复杂,字符串也可能显示为ab/c/defg/*

我不是一个有VBA或python编程经验的人,尽管我在学习。 我有一个excel文件,其中包含一个非常特定的字符串
ab/c/defg/0123/456
,位于一个可变长度(文本和数字)的字符串中。变量字符串始终位于电子邮件的主题标题中。出于目的,我已将其提取到excel中

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

在excel中,函数split、MID、left、right没有帮助,因为字符串可能会随机出现在字符串中:如下所示:

第1行:ab/c/defg/0123/456布拉布拉布拉布拉03/10/2012-05/11/2012-布拉布拉布拉
第二排:布拉布拉布拉04/10/2012-01/11/2012-布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉 第3行:布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉 第四行:布拉布拉布拉2012年10月13日-布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉
第5行:布拉尔布拉;布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉布拉

结果将是: cd
第1行:ab/c/defg/0123/456布拉布拉布拉布拉03/10/2012-05/11/2012-布拉布拉布拉。ab/c/defg/0123/456
等等……
第4行第d列将不是无值/空

该文件包含约9000行,但在分析其他邮箱/excel文件时可能会更大


有什么想法吗?

首先,最好的办法可能是使用
范围。查找
方法。它将为您提供是否找到字符串的信息,并返回找到字符串的区域/单元格(如果是)。我警告您的是-小心使用
。Find
方法可能不需要的其他参数,但似乎您最终将不得不使用它们

这是。你会发现这些例子非常有用。 另外还要检查
.Range.FindNext
属性

您可以体验一下宏录制器,因为它完全支持
。查找
功能

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

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)
斜杠和反斜杠的备注。您可能需要启动几次搜索,每次都必须更改“要搜索的数据”,例如:

  • 在第一步中,您可以搜索
    ab/c/defg/123/456
    (精确匹配)
  • 如果在下一步中未找到,您可以搜索
    Replace(“ab/c/defg/123/456”。/”,“\”
  • 但是,如果字符串中有任何类型的模式,则最好使用替换标记,如
    *
    ,例如
    ab?c?defg?123?456
    ab?c?defg?*123?456
  • 等等

  • 字符串是否始终是相同的字母数字字符组合,或者任何字母都可以放在“a”的位置,任何数字都可以放在“2”的位置?欢迎使用!我们不会为您编写代码,但如果您的代码有问题,我们会帮助您。试一试,如果你需要帮助,请稍后明确询问我们问题出在哪里。Kaybee99,你完全正确。任何字母都可以放在“a”的位置,也可以是任意数字的“2”。谢谢你的快速回复KazJAw,我将在本周末尝试测试。