我目前在excel中为其他用户提供以下内容。
Number
列不会更改。用户将在Multiplier 1
和Multiplier 2
列中输入值,他们将在Outcome
列中获得值。
是否有自动方式,用户还可以在Outcome
列中输入值,Multiplier 1
列会发生变化?
目前Number
和Outcome
列受到保护,我是否需要取消保护Outcome
列?
答案 0 :(得分:0)
我建议您使用工作表中的Sub Worksheet_Change(ByVal Target as range)
使用一些VBA代码。
如果用户在D2中输入一个值,它将输入公式" = D2 /(A2 * C2)"在B2 如果用户在B2中输入一个值,它将输入公式" = A2 * B2 * C2"在D2
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Cells.Count > 1 Then Exit Sub
On Error GoTo LastLine
If Not Intersect(Target, Range("D2")) Is Nothing Then
Range("B2").Formula = "=D2/(A2*C2)"
ElseIf Not Intersect(Target, Range("B2")) Is Nothing Then
Range("D2").Formula = "=A2*B2*C2"
End If
LastLine:
Application.EnableEvents = True
End Sub
答案 1 :(得分:0)
这可以做到。首先要注意你的公式如此简单,以至于你 可以很容易地解决乘数1作为函数:
结果除以(数乘以乘数2)
接下来通过添加一个包含公式的1像素宽的列变得棘手 对于(原来是输入而不是公式)原始的结果 结果栏目。
类似地,在包含的乘数1的右侧添加1像素宽的col 你的乘数1的新公式。调整原始输入的数据验证 乘数1和结果的单元格只允许两者中的一个 一次输入(在excel自定义数据中适当使用isblank函数 每个单元格的验证规则)。
最后右对齐两个1像素宽的单元格,使其计算出值 当它们为空时出现在相应的可输入单元格内。 是的它很棘手,但它确实有效。
对不起,这只是一个大纲,但我在应用程序中使用了它 效果很好。没有vba,所以撤消重做不要破坏。尝试它你会喜欢它。