选择一个单元格中两个字符之间的字符串,然后将该字符串粘贴到另一个单元格中,用于工作表中的每一行



我们每天都会在收件箱中收到所有客户的摘要电子邮件,但它们来自同一个电子邮件地址,因此当我们导出它们时,所有客户都列为同一封电子邮件。主题包括客户名称,因此我只需要将客户名称从Excel中" M"列中的单元格复制到" B"列中的单元格中。这需要对工作表中的每一行进行,但我有点卡在代码端。请问我可以得到一些帮助吗?

作为参考,我们收到的电子邮件主题是: 新警报(客户名称>警报类型>设备(

所以我想挑选出客户名称,它将在"("和">"之间。然后我想将其粘贴到同一行的单元格中,在"B"列中。

我希望对"M"列中的每个单元格重复此操作。

我已经尝试了各种代码片段,但没有一个是完整的交易,而且我在 VB 中的经验如此乏善可陈,我不完全确定我在做什么。

所以我当前的代码如下。

Sub CustomerNames()
Dim str As String
Dim openPos As Integer
Dim closePos As Integer
Dim midBit As String
str = ActiveSheet.Range("M" & Rows.Count).Select
openPos = InStr(str, "(")
closePos = InStr(str, ">")
midBit = Mid(str, openPos + 1, closePos - openPos - 1)

End Sub

因此,我想要的结果是宏将检查"M"列中的每个单元格,在字符串中的"("和">"字符之间查找客户名称。然后,它应该将找到的字符串复制到"B"列中同一行中的相应单元格。

实际输出目前不会对电子表格进行任何更改。

你需要使用循环,有很多可用的教程,它真的很容易,我建议你研究一下:)

这是我的方法,假设您的数据在M2:M10中,工作簿ThisWorkbook,工作表名称test- 相应地更改。代码将在 B 列中输出您的 midBit,在 A 列中输出行号。

'set workbook and worksheet objects
Set wb = ThisWorkbook
Set ws = wb.Sheets("test")
'set range
Set rng = ws.Range("M2:M10")
'loop through each cell in set range
For Each cel In rng
With cel
openPos = InStr(.Value, "(") + 1
closePos = InStr(.Value, ">") - 1
midBit = Mid(.Value, openPos, closePos - openPos)
'update value(s)
ws.Cells(.row, "B").Value = midBit
ws.Cells(.row, "A").Value = .row
End With
Next

请记住,这是非常基本的代码,没有声明或错误处理,这是您必须自己做的事情。这只是给你一些开始的东西。

最新更新