根据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值之前。

目的:

  1. 检查D列是否包含一个数字。
  2. 检查列E或F是否包含数字
  3. 填写剩余的列

另外,我将在一些行中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应该计算另一个公式,结果应该出现在相邻的单元格中。