VBA Excel 中的叉积
VBA for Cross Products in Excel
似乎出于某种原因 Excel 程序员选择省略任何向量叉积功能。
而且网上看,需求量不大。虽然excel是做线性代数的利器。
我需要一个 VBA 脚本来计算向量叉积。我唯一能找到的是这里:
编辑:
- 要添加 VBA 脚本,请按 Alt + F11
- 在项目下,右键单击 VBA项目并插入->模块
- 保存,单击“否”保存为启用宏的工作簿
- 另存为 .xlsm 文件
--------------------
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
--------------------
使用起来很简单,
- select 3个水平相邻单元格,输入公式
=vCP(
- Select 向量 A(在 A x B 中)位于 3 个连续的水平或垂直单元格中
- 输入
,
- Select 向量 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 之间存在名称冲突。我终于通过重新命名转置版本 CPv 解决了这个问题。我不明白名字冲突是怎么产生的。
似乎出于某种原因 Excel 程序员选择省略任何向量叉积功能。
而且网上看,需求量不大。虽然excel是做线性代数的利器。
我需要一个 VBA 脚本来计算向量叉积。我唯一能找到的是这里:
编辑:
- 要添加 VBA 脚本,请按 Alt + F11
- 在项目下,右键单击 VBA项目并插入->模块
- 保存,单击“否”保存为启用宏的工作簿
- 另存为 .xlsm 文件
--------------------
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
--------------------
使用起来很简单,
- select 3个水平相邻单元格,输入公式
=vCP(
- Select 向量 A(在 A x B 中)位于 3 个连续的水平或垂直单元格中
- 输入
,
- Select 向量 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 之间存在名称冲突。我终于通过重新命名转置版本 CPv 解决了这个问题。我不明白名字冲突是怎么产生的。