在这种情况下,如何避免使用VBA进行循环引用



我输入了很多行数据。有时我会在 A 列中输入净值,有时我会在 C 列中输入毛额。 净额 + 增值税 = 毛额。在所有情况下,我都希望公式自动为我计算缺失的数字。

我有三列(ABC(A 列表示净额,B 列表示名义增值税,C 列表示毛额。我在 B 中有一个公式,如果 A 增值税,或者如果 B 增值税否则为空。

目前,如果我在 A 中输入任何东西,则计算增值税,C 为空:

  A    B    C
  100  20  

同样,如果我在 C 中输入任何东西,增值税是计算的,但 A 是空白的:

A    B    C
    20    120

我想要的在下面,无论是给出的 A,还是 C。

A    B    C
100  20   120
我正在尝试计算给定的总数字的净

值,以及单行上给定的净数字的总值。

请注意,B 列是受保护的,我有一个公式可以自动计算增值税,无论数字是先输入 C,还是先输入 A:

=IF(E2>0,E2*VATRATE,IF(G2>0,G2-(G2/(1+VATRATE)),""))

理想情况下,使用 VBA,如果 A 给定,则 cal C,如果 C 给定 calc A。

实际上,

您根本不需要VBA。使用以下公式:

  • A2 =IF(NOT(ISFORMULA(C2)),C2-B2,0)净值
  • B2 中的增值税 =IF(NOT(ISFORMULA(A2)),A2*VATRATE,IF(NOT(ISFORMULA(C2)),C2-(C2/(1+VATRATE)),0))
  • C2 =A2+B2中的毛额

诀窍是确定是否手动输入了数字。知道这一点后,可以使用 if 语句来避免循环引用。

根据需要复制任意数量的行。

最新更新