首页 > 解决方案 > 查找、替换和计算多个值

问题描述

旧值

1. A + B + C
2. A + B
3. A + D + E +I

健康)状况

(A=1, B=2, C=3, D=4, E=5, I=6)

新价值观

1. 6
2. 3
3. 16

=替换(替换(K2,索引(旧,O5:O9),索引(新,P5:P9)),索引(旧,O5:O9),索引(新,P5:P9))

=替换(替换(K2,索引(旧,O5:O9),索引(新,P5:P9)),索引(旧,O5:O9),索引(新,P5:P9))

所以,实际上我想改变和计算值。只求和没有字母的数字,使用 excel 公式的符号

在此处输入图像描述

标签: excelvbaexcel-formulaspreadsheet

解决方案


如果您愿意将 UDF 放入您的项目中,那么这将为您完成。

Public Function CalculateBasedOnAlphabetIndex(ByVal strFormulaToEvaluate As String) As Double
    Application.Volatile

    Dim i As Long, strLetter, dblNumber As Double, varValue As Variant

    strFormulaToEvaluate = UCase(strFormulaToEvaluate)

    On Error Resume Next

    For i = 65 To 90
        strLetter = Chr(i)

        Err.Clear

        varValue = WorksheetFunction.VLookup(strLetter, Range("AlphaLookup"), 2, False)

        If Err.Description = "" Then
            dblNumber = varValue
        Else
            dblNumber = i - 65 + 1
        End If

        strFormulaToEvaluate = Replace(strFormulaToEvaluate, Chr(i), dblNumber, , , vbTextCompare)
    Next

    On Error GoTo 0

    CalculateBasedOnAlphabetIndex = Evaluate(strFormulaToEvaluate)
End Function

...没有错误检查,但只要您坚持公式编写的基础知识,它就会起作用。

要完成上述工作,您需要在转换表的顶部创建一个命名范围,该范围需要称为“ AlphaLookup ”,并在代码中的VLOOKUP中使用以获取字母对应的值......

AlphaLookup

...然后将用于查找字母并找到它的赋值。不过,这张桌子有一个巧妙的技巧。如果字母对应的数字与其在字母表中的索引不同,您只需要维护该表中的字母。

例如,您说 A = 1、B = 2、C = 3、D = 4、E = 5 和 I = 6,所以在填写该范围时,根据上述内容,您必须输入的所有内容都是I,因为我在字母表中的位置不是第 6 位,而是第 9 位。

如果您不熟悉如何进入 Visual Basic 编辑器,请按Alt + F11,它将为您打开。

从这里插入一个新模块,然后粘贴该代码。

您现在可以直接在单元格中应用公式,就像这样......

=CalculateBasedOnAlphabetIndex(A1)

此 UDF 还将评估带有数字的公式,因此以下示例将起作用。

在此处输入图像描述

我希望这对你有帮助。


推荐阅读