在Excel中的字符之间提取和复制文本

时间:2018-06-21 15:33:26

标签: excel vba

我正在寻找一种提取2个字符之间的文本并将其复制到电子表格末尾的列中的方法。

例如,我的文本看起来像[abcdefg],都在A列中,我希望提取“ [”之间的文本并将其复制到工作表末尾的新列中(作为新列)

谢谢

3 个答案:

答案 0 :(得分:1)

我会诉诸功能,因为它们只是最简单的。要在2个字符之间提取数据,可以混合使用MIDFIND函数。

因此,假设您的数据位于单元格A1中,则可以将此公式放在要解析值的单元格中:

=MID(A1,FIND("[",A1)+1,FIND("]",A1)-FIND("[",A1)-1)

如果要使其自动化,可以将其放入宏中,然后复制/粘贴特殊值以删除该函数并保留这些值。

答案 1 :(得分:0)

如果要将其写入vba模块,循环访问A列中的所有条目,然后将[]中的文本提取到B列中的条目,则可能类似于:

Dim ws as Worksheet
Dim i as integer
Dim lastRow as Integer
Dim brack1pos as Integer
Dim brack2pos as Integer

Set ws = ThisWorkbook.Worksheets("My Sheet Name")

for i = 1 to lastRow  'I'll leave to you how to find the last row
     brack1pos = InStr(ws.Range("A" & i), "[")
     brack2pos = InStr(ws.Range("A" & i), "]")
     ws.Range("B" & i) = Trim(Mid(ws.Range("A" & i), brack1pos + 1, brack2pos - brack1pos - 1))
next

答案 2 :(得分:0)

这是针对单元格1、1中的文本的,但是当您遍历行时,可以在其中扔一些变量。它将抓住方括号内的值并对其进行修剪,其他文本可以位于方括号的前面或后面。

    Dim iPos1 As Integer
    Dim iPos2 As Integer
    iPos1 = InStr(Sheet1.Cells(1, 1), "[")
    iPos2 = InStr(Sheet1.Cells(1, 1), "]")

    Sheet1.Cells(1, 2) = Trim(Mid(Sheet1.Cells(1, 1), iPos1 + 1, iPos2 - iPos1 - 1))