VBA在单元格中查找字符串并在另一个单元格中创建新数据

时间:2016-06-16 23:35:52

标签: excel vba excel-vba

我正在尝试完成的任务如下: 每个字母代表个人收到的特定培训。问题是我们有一些符号,在你实现多个符号后,成为另一个符号。所以我需要做的是分解单元格中的符号,并让它们返回到它们的完整值。

示例:

    D2: {@DWRZ}
    R= B+X
    Result after code: {@DWBXZ}

我不确定如何在VBA中执行此操作,我假设类似于字符串搜索,如果找到R,则将没有R的当前内容写入新单元格并添加BX。想法?

1 个答案:

答案 0 :(得分:0)

如果不确切知道数据的结构,那么编写一个功能齐全的解决方案有点困难。例如,知道在表中相对于“{@DWRZ}”定义“R = B + X”的位置会很有帮助。话虽这么说,这是一个我觉得可能适合你的一般解决方案。

Function ReplaceValues(OldString As String)
    n = 3 ' <----------------Adjust the number of replacements as needed.
    ReDim arr(1 To n, 1 To 2)  '                                 ^
    arr(1, 1) = "R": arr(1, 2) = "BX"   '                        |
    arr(2, 1) = "--": arr(2, 2) = "--"  '                        |
    arr(3, 1) = "--": arr(3, 2) = "--"  '                        |
    '  <------------Add more definitions as needed... ---------- +
    For x = 1 To n
        If InStr(1, OldString, arr(x, 1)) Then 'If the leter "R" is found in "@DWRZ"
            NewString = Replace(OldString, arr(x, 1), arr(x, 2)) 'Replace it with "BX"
        End If
    Next
    ReplaceValues = NewString
End Function

如果将此功能放在项目中,那么您将能够以与Excel中内置的任何功能相同的方式调用它。例如=ReplaceValues(A1),其中单元格A1包含您的字符串,“{@ DWRZ}”希望这对您有用。