将所有单元格、数字和符号合并为一个总和
combine all cells, numbers and symbols to a sum
美好的一天,
我对这个问题一头雾水。
我有一组包含单词的单元格,比如苹果,这个单词就是值。它由完成数学的符号分隔。用户可以更改它们以进行自定义计算。
单元格A1是"apple",B1是“+”,单元格C1是"apple",单元格D1是“*”,单元格E1是"apple",调用F1是“=” " 单元格 G1 是建议的总数,在本例中为“6”。
它将被发布为 |苹果 | + |苹果 | * |苹果 | = | 6 |
图例包含单词的值,因此如果您在图例中输入 2,apple 就是 2。
逻辑将确定公式将是 2+2*2= 如果写成 excel,我想合并所有单元格并计算它。
我尝试使用 =sum、sumproduct、concate 等,但都无济于事。
不管我做了什么,我最终都把 BEDMAS 弄错了,因为它计算的是 2+2=4*2=8,而不是正确的 2*2=4+2=6.
有人知道合并这些单元格并将这些值正确求和到正确总数的方法吗?
感谢您的宝贵时间!
转到 Name manager
并创建命名范围 Eval
,在 Refers to
字段中添加公式:
=EVALUATE(CONCATENATE(VLOOKUP(Sheet1!A1,Sheet1!$A:$B,2,0),Sheet1!B1,VLOOKUP(Sheet1!C1,Sheet1!$A:$B,2,0),Sheet1!D1,VLOOKUP(Sheet1!E1,Sheet1!$A:$B,2,0)))
在A3:B5范围内我有图例。
根据需要更改参考。然后在单元格 G1
中写入公式 =Eval
.
样本:
这是一个基于 UDF 的解决方案。它的优势在于,如果您学习了它的代码元素,它会更通用并且更容易维护。缺点是你必须学习代码的元素,而且你有一个 xlsm 启用宏的工作簿,这在任何地方都不受欢迎。
设置很简单。我创建了一个包含 Item 和 Value 列的 table。我把它放在另一个 sheet 任务之外。事实上,您可以将 sheet 与 table VeryHidden 一起使用,这样用户无法在不访问 VBA 项目的情况下查看它,您可以对其进行密码保护。我调用了tableLegend。项目列的名称如 apple、pear、orange。值列具有与每个名称关联的数值。
请注意,由于这是一个 VBA 项目,因此可以将整个列表转移到 VBA,而不会在 sheet 上留下任何痕迹。你可以有一个函数来显示每个项目的值,当用户点击它时,它会在他点击其他地方时消失。
接下来,我在 A1 中创建了一个数据验证下拉列表,列表定义为 =INDIRECT("Legend[Item]")
。将此单元格复制到 C1 和 E1。
然后我在 B1 中创建了另一个数据验证下拉列表,列表为 +,-,*,/
。此下拉菜单必须复制到 D1。
现在下面的代码进入标准代码模块。找到创建它的方法,因为它不是任何 Excel 自动设置的。它的默认名称是 Module1。将代码粘贴到此处。
Function Evalue(Definition As Range) As Double
Dim Task As String
Dim Fact(2) As Double
Dim C As Long
Dim i As Long
With Definition
For C = 1 To 5 Step 2
On Error Resume Next
Fact(i) = Application.VLookup(.Cells(C).Value, Range("Legend"), 2, False)
i = i + 1
Next C
Task = "(" & Fact(0) & .Cells(2).Value _
& Fact(1) & ")" & .Cells(4).Value _
& Fact(2)
End With
Evalue = Evaluate(Task)
End Function
现在您可以进行测试了。从 worksheet 中调用函数,例如
=Evalue(A1:E1)
。您可以在 =IF(G6 = Evalue(A1:E1), "Baravo!", "Try again")
之类的比较中使用它。当您更改任何组件时,具有该功能的单元格将会更改。
如果复制包含范围的公式,请记住使用绝对寻址。如果您在测试时需要在 VBA 中获得结果,请使用此 sub 调用该函数。
Private Sub TestEvalue()
Debug.Print Evalue(Range("A1:E1"))
End Sub
My Sheet
这是我所拥有的。
在单元格 M - U 中,我计算图例中单元格 E、G 和 I 中单词的所有实例。
=SUMPRODUCT((LEN(E3)-LEN(SUBSTITUTE(E3,$B,"")))/LEN($B))
在单元格 W - AE 中,每次出现单词时,我都会将实例乘以值得到总和。
=SUM(M3*$C)
在单元格 E8 - I8 中,我将三个可能的值相加。
=SUM(W3:Y3) 所以每个带字的单元格现在都是一个数字。
我想用 E8 - I8 单元格在 k8 中进行计算,依此类推。
因此,每个单元格放在一起构成一个
=SUM(E8:I8)
语句,除了 E11 - I11 等于 26 而不是 43 之外,其他都有效。
美好的一天,
我对这个问题一头雾水。
我有一组包含单词的单元格,比如苹果,这个单词就是值。它由完成数学的符号分隔。用户可以更改它们以进行自定义计算。
单元格A1是"apple",B1是“+”,单元格C1是"apple",单元格D1是“*”,单元格E1是"apple",调用F1是“=” " 单元格 G1 是建议的总数,在本例中为“6”。 它将被发布为 |苹果 | + |苹果 | * |苹果 | = | 6 |
图例包含单词的值,因此如果您在图例中输入 2,apple 就是 2。 逻辑将确定公式将是 2+2*2= 如果写成 excel,我想合并所有单元格并计算它。
我尝试使用 =sum、sumproduct、concate 等,但都无济于事。
不管我做了什么,我最终都把 BEDMAS 弄错了,因为它计算的是 2+2=4*2=8,而不是正确的 2*2=4+2=6.
有人知道合并这些单元格并将这些值正确求和到正确总数的方法吗?
感谢您的宝贵时间!
转到 Name manager
并创建命名范围 Eval
,在 Refers to
字段中添加公式:
=EVALUATE(CONCATENATE(VLOOKUP(Sheet1!A1,Sheet1!$A:$B,2,0),Sheet1!B1,VLOOKUP(Sheet1!C1,Sheet1!$A:$B,2,0),Sheet1!D1,VLOOKUP(Sheet1!E1,Sheet1!$A:$B,2,0)))
在A3:B5范围内我有图例。
根据需要更改参考。然后在单元格 G1
中写入公式 =Eval
.
样本:
这是一个基于 UDF 的解决方案。它的优势在于,如果您学习了它的代码元素,它会更通用并且更容易维护。缺点是你必须学习代码的元素,而且你有一个 xlsm 启用宏的工作簿,这在任何地方都不受欢迎。
设置很简单。我创建了一个包含 Item 和 Value 列的 table。我把它放在另一个 sheet 任务之外。事实上,您可以将 sheet 与 table VeryHidden 一起使用,这样用户无法在不访问 VBA 项目的情况下查看它,您可以对其进行密码保护。我调用了tableLegend。项目列的名称如 apple、pear、orange。值列具有与每个名称关联的数值。
请注意,由于这是一个 VBA 项目,因此可以将整个列表转移到 VBA,而不会在 sheet 上留下任何痕迹。你可以有一个函数来显示每个项目的值,当用户点击它时,它会在他点击其他地方时消失。
接下来,我在 A1 中创建了一个数据验证下拉列表,列表定义为 =INDIRECT("Legend[Item]")
。将此单元格复制到 C1 和 E1。
然后我在 B1 中创建了另一个数据验证下拉列表,列表为 +,-,*,/
。此下拉菜单必须复制到 D1。
现在下面的代码进入标准代码模块。找到创建它的方法,因为它不是任何 Excel 自动设置的。它的默认名称是 Module1。将代码粘贴到此处。
Function Evalue(Definition As Range) As Double
Dim Task As String
Dim Fact(2) As Double
Dim C As Long
Dim i As Long
With Definition
For C = 1 To 5 Step 2
On Error Resume Next
Fact(i) = Application.VLookup(.Cells(C).Value, Range("Legend"), 2, False)
i = i + 1
Next C
Task = "(" & Fact(0) & .Cells(2).Value _
& Fact(1) & ")" & .Cells(4).Value _
& Fact(2)
End With
Evalue = Evaluate(Task)
End Function
现在您可以进行测试了。从 worksheet 中调用函数,例如
=Evalue(A1:E1)
。您可以在 =IF(G6 = Evalue(A1:E1), "Baravo!", "Try again")
之类的比较中使用它。当您更改任何组件时,具有该功能的单元格将会更改。
如果复制包含范围的公式,请记住使用绝对寻址。如果您在测试时需要在 VBA 中获得结果,请使用此 sub 调用该函数。
Private Sub TestEvalue()
Debug.Print Evalue(Range("A1:E1"))
End Sub
My Sheet 这是我所拥有的。
在单元格 M - U 中,我计算图例中单元格 E、G 和 I 中单词的所有实例。
=SUMPRODUCT((LEN(E3)-LEN(SUBSTITUTE(E3,$B,"")))/LEN($B))
在单元格 W - AE 中,每次出现单词时,我都会将实例乘以值得到总和。
=SUM(M3*$C)
在单元格 E8 - I8 中,我将三个可能的值相加。 =SUM(W3:Y3) 所以每个带字的单元格现在都是一个数字。
我想用 E8 - I8 单元格在 k8 中进行计算,依此类推。
因此,每个单元格放在一起构成一个
=SUM(E8:I8)
语句,除了 E11 - I11 等于 26 而不是 43 之外,其他都有效。