Excel中的跨产品VBA



看来,出于某种原因,Excel程序员选择省略任何向量跨产品功能。

此外,在网上查找,对此的需求并不多。尽管Excel是执行线性代数的强大工具。

我需要一个VBA脚本来制作矢量跨产品。我唯一能找到的是这里:

编辑:

  1. 要添加VBA脚本,请按Alt F11
  2. 在项目下,右键单击vbaproject和insert->模块
  3. 保存,单击"否"保存为宏观启用的工作簿
  4. 另存为.xlsm文件

https://www.excelbanter.com/excel-worksheet-functions/209233-how-do-do-you-use-use-use-use-basic-basic-find-cross-cross-product-two-vectors.html

--------------------
Function vCP(v1 As Variant, v2 As Variant) As Variant
vCP = Array(v1(2) * v2(3) - v1(3) * v2(2), _
v1(3) * v2(1) - v1(1) * v2(3), _
v1(1) * v2(2) - v1(2) * v2(1))
End Function
--------------------

使用它很简单,

  1. 选择3个水平相邻单元格,输入公式
  2. =vCP(
  3. 选择载体A(在X B中),在3个连续的水平或垂直细胞中
  4. 类型,
  5. 选择向量B,它是垂直细胞连续3个水平的
  6. 类型)
  7. 按Ctrl Shift Enter

我在上面进行了几个测试,并且它有效,但它输出了水平向量,而不是垂直的,这是线性代数的首选方式。

有人知道如何更改此脚本,以便可以垂直输出3D向量?

有更好的方法可以在Excel中获得跨产品?

谢谢-d

使用application.transpose:

Function vCP(v1 As Variant, v2 As Variant) As Variant
vCP = Application.Transpose(Array(v1(2) * v2(3) - v1(3) * v2(2), _
v1(3) * v2(1) - v1(1) * v2(3), _
v1(1) * v2(2) - v1(2) * v2(1)))
End Function

我试图使用上面的代码(函数名称vcp2)生成转置,但生成了ref#!错误。

经过多次试验,我意识到原始函数VCP(保留在模块中)与转置版本VCP2之间存在着冲突。我终于通过重新命名Transpose版本CPV解决了问题。我不明白名称冲突是如何出现的。

相关内容

  • 没有找到相关文章

最新更新