如何在Excel中创build相互依赖的列?

我试图创build的是一个预算电子表格,可以将值input到每日,每周,每月或每年的一个单元格中,并且将在整个行中计算其他元素的值。

ABCDE 1 CATEGORY DAILY BUDGET WEEKLY BUDGET MONTHLY BUDGET YEARLY BUDGET 2 Restaurants $1.43 *$10.00* $43.45 $521.43 3 Fuel $3.29 $23.01 *$100.00* $1,200.00 4 Daily coffee *$1.65* $11.55 $50.19 $602.25 5 Auto Insurance $3.29 $23.01 $100.00 *$1,200.00* 

它看起来像上面那样,星号表示input一阶值的位置。 例如,每周预算列中input的$ 10将计算其他三个值中的值,以此类推,对于在每个不同列中input了一阶值的其余行,都会这样计算。

我足够了解它涉及到一些Excel VBA。 事实上,在雅虎答案这个答案是非常接近我想要做的,除非我需要它在活动单元格各行的列工作。

编辑:添加列和行引用我的表,这里是我修改的代码:

 Private Sub PeriodConversion(ByVal Target As Range) Application.EnableEvents = False If Target.Address = "$B$2" Then [C2] = [B2] * 7 [E2] = [B2] * 365 [D2] = [E2] / 12 ElseIf Target.Address = "$C$2" Then [B2] = [C2] / 7 [E2] = [B2] * 365 [D2] = [E2] / 12 ElseIf Target.Address = "$D$2" Then [E2] = [D2] * 12 [B2] = [E2] / 365 [C2] = [B2] * 7 ElseIf Target.Address = "$E$2" Then [D2] = [E2] / 12 [B2] = [E2] / 365 [C2] = [B2] * 7 End If Application.EnableEvents = True End Sub 

虽然它似乎没有工作..:\

我没有testing过这个,但基于你开始的想法,也许试试这个:

(将代码放在表格所在的工作表中)

 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row=1 then Exit Sub Application.EnableEvents = False Select Case Target.Column Case 2 ' [C2] = [B2] * 7 Target.Offset(0, 1).Value = Target.Value * 7 ' [E2] = [B2] * 365 Target.Offset(0, 3).Value = Target.Value * 365 ' [D2] = [E2] / 12 Target.Offset(0, 2).Value = Target.Offset(0, 3).Value / 12 Case 3 ' [B2] = [C2] / 7 Target.Offset(0, -1).Value = Target.Value / 7 ' [E2] = [B2] * 365 Target.Offset(0, 2).Value = Target.Offset(0, -1).Value * 365 ' [D2] = [E2] / 12 Target.Offset(0, 1).Value = Target.Offset(0, 2).Value / 12 Case 4 ' [E2] = [D2] * 12 Target.Offset(0, 1).Value = Target.Value * 12 ' [B2] = [E2] / 365 Target.Offset(0, -2).Value = Target.Offset(0, 1).Value / 365 ' [C2] = [B2] * 7 Target.Offset(0, -1).Value = Target.Offset(0, -2).Value * 7 Case 5 ' [D2] = [E2] / 12 Target.Offset(0, -1).Value = Target.Value / 12 ' [B2] = [E2] / 365 Target.Offset(0, -3).Value = Target.Value / 365 ' [C2] = [B2] * 7 Target.Offset(0, -2).Value = Target.Offset(0, -3).Value * 7 End Select Application.EnableEvents = True End Sub