带有 For 循环的多维数组 VBA

2024-05-07

尝试检查第一列中的值(即多维数组中的列),如果它匹配,则对另一列中与该行匹配的值进行排序。

我认为我做错了,但这是我第一次搞乱多维数组。

我是否需要在每个 for 循环中使用 UBound 和 LBound 来告诉它要查看哪一列?

除了当前问题的答案/解决方案之外,我绝对有兴趣学习将来使用它的最佳实践方法。

Code:

 Private Sub ThisStuff()

 Dim CoaAmt As Long
 Dim COAArray(3, 2)
 Dim ThisValue As String
 Dim AnotherValue As String

 AnotherValue = "Bananas"
 ThisValue = "Apples"


 COAArray(0, 0) = "Apples"
 COAArray(1, 0) = "Oranges"
 COAArray(2, 0) = "Peaches"
 COAArray(3, 0) = "Pomegranets"
 COAArray(0, 1) = 498
 COAArray(0, 1) = 505
 COAArray(1, 1) = 564
 COAArray(1, 2) = 556
 COAArray(2, 1) = 570
 COAArray(2, 2) = 573
 COAArray(3, 1) = 742
 COAArray(3, 2) = 750


 If AnotherValue = "Bananas" Then
     For i = COAArray(0, 0) To COAArray(3, 0)
             For j = COAArray(1, 0) To COAArray(3, 2)
                 If COAArray(i, j) = ThisValue Then CoaAmt = COAArray(i, j)
             Next j
     Next i
 End If

 MsgBox ("The value of CoaAmt is    " & CoaAmt)

 End Sub

是的。这LBound https://msdn.microsoft.com/en-us/library/t9a7w1ac(v=vs.90).aspx and UBound https://msdn.microsoft.com/en-us/library/office/gg278658.aspx函数允许您指定rank。这使您的嵌套 For .. Next 循环可以循环遍历所有数组元素。

 debug.print LBound(COAArray, 1) & ":" & UBound(COAArray, 1)
 debug.print LBound(COAArray, 2) & ":" & UBound(COAArray, 2)
 If AnotherValue = "Bananas" Then
     For i = LBound(COAArray, 1) To UBound(COAArray, 1)
         For j = LBound(COAArray, 2) To UBound(COAArray, 2)
             If COAArray(i, j) = ThisValue Then CoaAmt = COAArray(i, j)
         Next j
     Next i
 End If

您的数组元素分配有点混乱。它应该更接近,

COAArray(0, 0) = "Apples"
COAArray(1, 0) = "Oranges"
COAArray(2, 0) = "Peaches"
COAArray(3, 0) = "Pomegranates"
COAArray(0, 1) = 498
COAArray(1, 1) = 505
COAArray(2, 1) = 564
COAArray(3, 1) = 556
COAArray(0, 2) = 570
COAArray(1, 2) = 573
COAArray(2, 2) = 742
COAArray(3, 2) = 750

例如,通过上面修复的数组分配,COA Array(0, 0) 是 Apple 的,COA Array(0, 1) 是 498,COAArray(0, 2) 是 570。下面吐出 498 和 570。

    Dim i As Long, j As Long
    Dim COAArray(3, 2) As Variant, CoaAmt(0 To 1) As Variant

    Dim ThisValue As String, AnotherValue As String

    AnotherValue = "Bananas"
    ThisValue = "Apples"

    COAArray(0, 0) = "Apples"
    COAArray(1, 0) = "Oranges"
    COAArray(2, 0) = "Peaches"
    COAArray(3, 0) = "Pomegranets"
    COAArray(0, 1) = 498
    COAArray(1, 1) = 505
    COAArray(2, 1) = 564
    COAArray(3, 1) = 556
    COAArray(0, 2) = 570
    COAArray(1, 2) = 573
    COAArray(2, 2) = 742
    COAArray(3, 2) = 750

    If AnotherValue = "Bananas" Then
        For i = LBound(COAArray, 1) To UBound(COAArray, 1)
            If COAArray(i, 0) = ThisValue Then
                For j = LBound(COAArray, 2) + 1 To UBound(COAArray, 2)
                   CoaAmt(j - 1) = COAArray(i, j)
                Next j
            End If
        Next i
    End If

    MsgBox "The value of CoaAmt is  " & CoaAmt(LBound(CoaAmt)) & "  " & CoaAmt(UBound(CoaAmt))

我不得不改变你的CoaAmtvar 到一维变体数组,以便收集两个数字并输出它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带有 For 循环的多维数组 VBA 的相关文章

随机推荐

  • Windows 控制台“ESC[2J”并没有真正“清除”屏幕

    我知道这类问题经常被问到 但我认为这个问题有点不同 需要被问到 新的 Windows 控制台支持 ANSI VT100 控制代码 ANSI VT100 控制代码 http www termsys demon co uk vtansi htm
  • 错误LNK2001:无法解析的外部符号公共:静态类[重复]

    这个问题在这里已经有答案了 我不明白为什么我会收到这个错误 任何人都可以伸出援手吗 我需要在头文件中声明VideoCapture捕获并在Video cpp中调用它 Video h class Video public static Vide
  • mongodb c# 选择特定字段

    需要一些帮助来创建generic按名称选择字段的方法 像这样的东西 T GetDocField
  • 如何防止模块被导入两次?

    在编写python模块时 有没有办法防止它被客户端代码导入两次 就像 c c 头文件一样 ifndef XXX define XXX endif 非常感谢 Python 模块不会被多次导入 仅运行两次 import 不会重新加载模块 如果你
  • Xcode 中的“使用不间断空格 (U+00A0) 代替常规空格”警告

    When typing a space character in Xcode a warning appears sometimes 使用不间断空格 U 00A0 代替常规空格 早期的 Xcode 版本显示以下消息 将 Unicode 字符
  • 如何获取表单的onSubmit事件?

    我想知道如何抢onsubmit表单中的事件来进行一些表单验证 因为我无权直接访问它 我正在编写一个用于评论的 WordPress 插件 因此无法直接访问表单标签或提交按钮 我在尝试为我的插件执行此操作时感到非常沮丧 因此我在下面编写了一个
  • 如何选择集合的第一个元素作为查询的列

    表 t 有两列 a 和 b a是整数 b是集合 我想为每一行选择 a 和集合 b 的第一个值 我试过了 但没用 WITH s a b AS SELECT 1 ff FROM DUAL UNION ALL SELECT 1 ee FROM D
  • 如何将十进制整数转换为十六进制整数? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions cout lt
  • 如何运行 Abaqus 宏 (.py) 脚本

    我是Python新手 我使用 Abaqus 宏管理器生成了一个宏 它是一个 py 脚本 我意识到该脚本仅在从 Abaqus 管理器运行时才有效 并且不能自行运行 请有人知道如何修改这个脚本 以便我可以在不使用 Abaqus 的情况下运行它
  • 如何绘制两个 ggplot 密度分布之间的差异?

    我想使用 ggplot2 来说明两个相似密度分布之间的差异 这是我拥有的数据类型的玩具示例 library ggplot2 Make toy data n sp lt 100000 n dup lt 50000 D lt data fram
  • 退出失败设置错误代码

    我有一个 C Windows 程序无法设置退出代码 该程序非常复杂 我目前无法通过简单的测试用例重现该程序 我确实知道该程序调用exit 1 因为我在那一行有一个断点 在我跨过它之后 调试器 VS2010 立即打印The program p
  • 使用 Rails 自动登录?

    我正在尝试使用 Rails 的 Restful Authentication 插件建立一个简单的身份验证系统 我只是想知道它是如何工作的 b c 我似乎无法弄清楚 cookie 的要求是什么 以及如何做到这一点浏览器始终会记住您 6 个多月
  • 难道 Linq to SQL 没有抓住要点吗? ORM 映射器(SubSonic 等)不是次优解决方案吗?

    我希望社区能够了解我对 Linq to Sql 和其他 ORM 映射器的一些想法 我喜欢 Linq to Sql 以及用本机开发语言表达数据访问逻辑 或一般的 CRUD 操作 的想法 而不必处理 C 和 SQL 之间的 阻抗不匹配 例如 要
  • 无法实例化名为 GLKView 的类

    我得到了这个异常 2014 02 19 19 08 34 590 MyApp 42353 70b Terminating app due to uncaught exception NSInvalidUnarchiveOperationEx
  • 在asp.net mvc 3项目中渲染部分视图onclick

    在我的 mvc 项目中 我有一个简单的项目列表 其中包含如下的增删改查操作 tbody foreach var item in Model tr td item Title td td item Body td td item Price
  • Android ListView,如果arrayAdapter的arrayList为空则显示消息

    我需要帮助 我有一个 Listview setListAdapter arrayAdapter 和数组适配器有一个 arrayList If my arrayList is empty it shows loading images it
  • 如何使用python创建从openerp自动发送邮件的程序

    如何使用python创建从openerp自动发送邮件的程序 我已经创建了 openerp 模块 当生成客户端 ID 时 我正在尝试向客户端发送邮件 在 sale 文件夹中的 sale py 中 当将潜在客户转换为客户时 我想向客户发送邮件
  • R 忽略空值的矩阵列的成对比较

    我有一个数组 我想获取它之间的相似度的度量values在每一列中 我的意思是我希望比较数组的成对列之间的行 并在它们的值匹配时增加一个度量 对于两列来说 所得的测量值最大值将完全相同 本质上我的问题与这里讨论的相同 R 两两比较矩阵中的所有
  • 在 Citrix 内打开的应用程序之间切换的键盘快捷键是什么?

    我正在使用 Citrix Access Gateway 连接到远程桌面 但无法找到在打开的应用程序之间切换的方法 当我按 Alt Tab 时 它会从远程桌面中出来 我的意思是 整个远程桌面被视为 1 个开放的应用程序 是否有其他键盘快捷键可
  • 带有 For 循环的多维数组 VBA

    尝试检查第一列中的值 即多维数组中的列 如果它匹配 则对另一列中与该行匹配的值进行排序 我认为我做错了 但这是我第一次搞乱多维数组 我是否需要在每个 for 循环中使用 UBound 和 LBound 来告诉它要查看哪一列 除了当前问题的答