Excel中的跨产品VBA

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Excel中的跨产品VBA相关的知识,希望对你有一定的参考价值。

似乎由于某些原因,Excel程序员选择省略任何矢量交叉产品功能。

此外,在网上看,对它的需求并不大。虽然excel是一个强大的线性代数工具。

我需要一个VBA脚本来做矢量交叉产品。我能找到的唯一一个就是从这里来的:

编辑:

  1. 要添加VBA脚本,请按Alt + F11
  2. 在Project下,右键单击VBAProject和Insert-> Module
  3. 单击“保存”,单击“否”以另存为启用宏的工作簿
  4. 另存为.xlsm文件

https://www.excelbanter.com/excel-worksheet-functions/209233-how-do-you-use-visual-basic-find-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(在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

以上是关于Excel中的跨产品VBA的主要内容,如果未能解决你的问题,请参考以下文章

请教excel汇总问题。vba

根据 Excel VBA 中的 ComboBox 显示/隐藏 WBS 项目

在 Excel 中运行 VBA 代码以获取 Access 数据库中的 VBA

Excel中的VBA如何调用Java呀?

插入代码时,打开事件中的 Excel 2010 vba EnableEvent 不起作用

VBA代码根据excel工作簿中的值从webform下拉列表中选择一个值