看来,出于某种原因,Excel程序员选择省略任何向量跨产品功能。
此外,在网上查找,对此的需求并不多。尽管Excel是执行线性代数的强大工具。
我需要一个VBA脚本来制作矢量跨产品。我唯一能找到的是这里:
编辑:
- 要添加VBA脚本,请按Alt F11
- 在项目下,右键单击vbaproject和insert->模块
- 保存,单击"否"保存为宏观启用的工作簿
- 另存为.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
--------------------
使用它很简单,
- 选择3个水平相邻单元格,输入公式
-
=vCP(
- 选择载体A(在X B中),在3个连续的水平或垂直细胞中
- 类型
,
- 选择向量B,它是垂直细胞连续3个水平的
- 类型
)
- 按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解决了问题。我不明白名称冲突是如何出现的。