如何使用关系在Excel中动态替换字符串?

时间:2018-10-10 09:59:19

标签: excel

我有一个由组件组成的公式和一个将每个组件转换为多个字符串的组件表。
我想用表中各个字符串之和的表达式替换每个组件。

示例:
公式= FOO / BAR
表格:

+-----------+---------+
| Component | Strings |
+-----------+---------+
| FOO       |     1.1 |
| FOO       |     1.2 |
| FOO       |     1.3 |
| FOO       |     5.1 |
| BAR       |  101.10 |
| BAR       |  101.15 |
| BAR       |    5.10 |
+-----------+---------+

结果:(1.1 + 1.2 + 1.3 + 5.1)/(101.10 + 101.15 + 5.10)

编辑:我需要打印表达式而不是计算结果。
我认为解决方案可能涉及功能替代。

2 个答案:

答案 0 :(得分:1)

假设您的数据在A2:B8中,则可以按照以下公式进行操作。

=SUMIF(A2:A8,"FOO",B2:B8)/SUMIF(A2:A8,"BAR",B2:B8)

这就是你想要的吗?

答案 1 :(得分:1)

我写了一个快速的肮脏的UDF,让您知道如何完成它。

将此代码放入模块中,并在任何单元格中写入FTEXT并提供参数。

enter image description here

Function test(Ref As Range, para1 As String) As String
    Dim Cell As Range
    Dim temp1 As String
    Dim temp2 As String

    For Each Cell In Ref
        If Cell.Value = para1 Then
            temp1 = temp1 & Cell.Offset(, 1).Value & "+"
        Else
            temp2 = temp2 & Cell.Offset(, 1).Value & "+"
        End If
    Next Cell

    test = "(" + Left(temp1, Len(temp1) - 1) + ")" + "/" + "(" + Left(temp2, Len(temp2) - 1) + ")"
End Function