使用VBA在Excel中的复杂公式

时间:2017-06-01 22:11:24

标签: vba excel-vba excel

我正在研究vba代码,其中我有不同深度的数据(对于Slope Inclinometers),如下所示:

Depth   A0  A180    Checksum    B0  B180    Checksum

4.5 (-1256) 1258    2   (-394)  378 (-16)

4.5 (-1250) 1257    7   (-396)  376 (-20)

4.5 (-1257) 1257    0   (-400)  374 (-26)

Depth   A0  A180    Checksum    B0  B180    Checksum

5   (-1214) 1214    0   (-472)  459 (-13)

5   (-1215) 1212    -3  (-472)  455 (-17)

5   (-1216) 1211    -5  (-473)  455 (-18)

未知数据将会存在(取决于用户转移到此表的数量)

现在我需要能够计算A轴位移,B轴位移以及具有以下公式的结果:

轴位移= [((A0-A180)/ 2) - ((A0 * -A180 *)/ 2))] *(常数/常数)

其中*是初始读数,它始终是指定深度的第一行数据。

B轴位移= [((A0-A180)/ 2) - ((A0 * -A180 *)/ 2))] *(常数/常数)

其中*是初始读数,它始终是指定深度的第一行数据。

结果= SQRT [(轴位移)^ 2 +(B轴位移)^ 2]

我正在努力寻找如何使用vba实现这一点的示例,因为在同一张纸上会存在各种深度(未知量),其中公式将需要在每个新深度处重新开始。

任何帮助/提示将不胜感激!

1 个答案:

答案 0 :(得分:1)

  

我如何使用vba实现这一点,因为会有各种深度...

你仍然可以使用公式和简单的自动填充来完成它,因为公式可以找到当前深度的第一个出现并执行所有必要的计算,在标题行留下空白或空行。例如,您可以在第2行输入这些公式并填写所有行。

H2 (A Axis Displacement):
=IF(ISNUMBER($A2),0.5*(B2-C2-VLOOKUP($A2,$A:$F,2,0)+VLOOKUP($A2,$A:$F,3,0)), "")

I2 (B Axis Displacement):
=IF(ISNUMBER($A2),0.5*(E2-F2-VLOOKUP($A2,$A:$F,5,0)+VLOOKUP($A2,$A:$F,6,0)), "")

J2 (Resultant):
=IF(ISNUMBER($A2),SQRT(SUMSQ(H2,I2)),"")

P.S。在位移公式中,我省略了(常数/常数)因子,因为它与答案无关,您可以轻松地将0.5因子乘以您需要的任何因子。

enter image description here