【问题标题】:Find specific string in excel, copy the specific string and copy to new cell in same row在excel中查找特定字符串,复制特定字符串并复制到同一行的新单元格
【发布时间】:2013-03-28 23:00:07
【问题描述】:

虽然学习,但我在 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 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 行:blablalbla ab/c/defg/0123/456 blablabla
第 4 行:blablabla 13/10/2012 - blablabla
第 5 行:blablalbla; blablabla blablablablablabla blablabla ab/c/defg/0123/456 - blablabla 1234456

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

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

有什么想法吗?

【问题讨论】:

  • 字符串是否总是相同的字母数字字符组合,或者任何字母都可以放在你放'a'的地方,以及你放'2'的任何数字?
  • 欢迎来到 SO!我们不会为您编写代码,但如果您的代码有问题,我们会为您提供帮助。所以试试吧,如果您需要帮助,请稍后具体问我们问题出在哪里。
  • Kaybee99,你完全正确,任何字母都可以放在“a”所在的位置,“2”也可以是任何数字。

标签: string excel vba extract


【解决方案1】:

首先,也许最好的办法是使用Range.Find 方法。如果找到字符串,它会为您提供信息,并返回找到字符串的范围/单元格(如果是的话)。我警告你的 - 注意.Find 方法可能不需要的附加参数,但似乎你最终将不得不使用它们。

这里是link to method description。您会发现其中的示例非常有用。 另外还要检查.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. 但如果您的字符串中有任何类型的模式,使用* 和? 之类的替换标记可能会更好,例如。 ab?c?defg?123?456 或 ab?c?defg?*123?456
  4. 等等……

【讨论】:

  • 感谢 KazJAw 的快速回复,这个周末我会尝试测试。
猜你喜欢
  • 2018-07-23
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 2019-02-11
  • 2021-09-12
  • 1970-01-01
  • 2017-09-25
  • 2018-11-30
相关资源
最近更新 更多