根据input的列填写剩余的单元格
我希望能够做到以下几点:
DEF 1 PQ pf 2 100 =D2/F2*SIN(ACOS(F2)) =D2/SQRT((D2^2+E2^2)) 3 200 =D3/F3*SIN(ACOS(F3)) =D3/SQRT((D3^2+E3^2)) 4 5 PQ pf 6 100 =D6/F6*SIN(ACOS(F6)) =D6/SQRT((D7^2+E6^2)) 7 200 =D7/F7*SIN(ACOS(F7)) =D7/SQRT((D7^2+E7^2))
也就是说,如果我在列F中input一个值,则列E中的值应该自动填入,如果在列E中input一个值,列F中的值应该自动填入。
但是,我不想显示#DIV/0!
,在我input值之前。
目的:
- 检查D列是否包含一个数字。
- 检查列E或F是否包含数字
- 填写剩余的列
另外,我将在一些行中input名字,因此这些必须被忽略。 我知道我可以把方程式拉下来,然后再这样做,那会给我#DIV/0!
。
有没有一个聪明的方法来做到这一点? 我正在使用Excel 2010。
- 打开VBE( Visual Basic编辑器 ) ALT + F11
- 在Project Explorer中右键单击并插入一个
Module
- 粘贴下面的代码
UDFfunction
Function E() Dim D As Range, F As Range Set D = ActiveCell.Offset(0, -1): Set F = ActiveCell.Offset(0, 1) If Len(D) = 0 Or Len(F) = 0 Then E = "" If Len(F) > 0 Then Dim result As Double result = Evaluate("=" & D & "/" & F & "*SIN(ACOS(" & F & "))") E = result End If End Function Function F() Dim D As Range, E As Range Set D = ActiveCell.Offset(0, -2): Set E = ActiveCell.Offset(0, -1) If Len(D) = 0 Or Len(E) = 0 Then F = "" If Len(E) > 0 Then Dim result As Double result = Evaluate("=" & D & "/SQRT((" & D & "^2+" & E & "^2))") F = result End If End Function
- 回到您的电子表格并input新的公式
- 单元格
E2
现在=E()
,单元格F2
现在=F()
向下拖动公式
结束了
更新:
自动插入和计算
在Project Explorer
»右键单击Sheet1
» View Code
插入下面的代码
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 5 Then FillF Target ElseIf Target.Column = 6 Then FillE Target End If End Sub
在Module1
中用下面的代码replace你的代码
Option Explicit Sub FillF(ByVal Target As Range) Dim D As Range, E As Range, F As Range Set E = Target Set D = E.Offset(0, -1) Set F = E.Offset(0, 1) If Not IsError(E) Then If Len(E) = 0 Then Exit Sub ElseIf Len(D) = 0 Then Exit Sub ElseIf Len(D) > 0 And Len(F) = 0 Then F.Formula = "=" & D & "/SQRT((" & D & "^2+" & E & "^2))" Exit Sub Else Exit Sub End If Else F.ClearContents End If End Sub Sub FillE(ByVal Target As Range) Dim D As Range, E As Range, F As Range Set F = Target Set E = F.Offset(0, -1) Set D = F.Offset(0, -2) If Not IsError(F) Then If Len(F) = 0 Then Exit Sub ElseIf Len(D) = 0 Then Exit Sub ElseIf Len(D) > 0 And Len(E) = 0 Then E.Formula = "=" & D & "/" & F & "*SIN(ACOS(" & F & "))" Exit Sub Else Exit Sub End If Else E.ClearContents End If End Sub
现在,转到您的电子表格,并在E栏中input一个数字,或者F应该计算另一个公式,结果应该出现在相邻的单元格中。