在Excel VBA中使用3列集合并进行搜索

在Excel VBA中使用3列集合并进行搜索,vba,collections,key,Vba,Collections,Key,我正在excel vba中构建一个算法来搜索网络中的路径。我是编程这类问题的新手。请不要建议其他软件。问题应该很简单 问题描述: 搜索表示弧上流的数据集合(3“列”:从、到、流) 确定从源到每条路径末端的路径(从源开始,找到流向“to”的流,在“from”字段中查找该“to”,找到流向该“to”的流,依此类推,直到找不到另一个“from”) 数据如下所示: 从节点到节点流 1 2 4 2 3 3 3 4 2 4 5 1 7 6 1 8 7 2 最大的障碍: 我正在使用一个集合来保存此数据,并使用

我正在excel vba中构建一个算法来搜索网络中的路径。我是编程这类问题的新手。请不要建议其他软件。问题应该很简单

问题描述: 搜索表示弧上流的数据集合(3“列”:从、到、流) 确定从源到每条路径末端的路径(从源开始,找到流向“to”的流,在“from”字段中查找该“to”,找到流向该“to”的流,依此类推,直到找不到另一个“from”)

数据如下所示:

从节点到节点流

1 2 4

2 3 3

3 4 2

4 5 1

7 6 1

8 7 2

最大的障碍:

我正在使用一个集合来保存此数据,并使用下面的代码进行设置

收藏 Set y=新集合 y、 添加表格(“FlowDecomp\u Solve”).范围(“fromtoflow”).值

数据被拉入,但看起来是这样的: (试过一张照片,但我是新用户)

项目1

项目1(1)

因此,它显示集合中有1个项目,而不是我的弧。如何访问集合的Item1(1,2)类型地址。每个特殊值是否都有唯一的键?在代码中使用特定行后,如何搜索集合并删除该行


非常感谢您的帮助。

经过多次尝试和错误,我决定将我的原始数据设置为一个数组,并按如下方式进行搜索(d位于数组下方,a位于整个数组):

然后,为了跟踪路径,我将from和to节点添加到一个名为path的集合中,直到它找不到另一个弧,然后写下路径,清空集合,更新值,然后重新开始

希望这对其他人有帮助

  Item 1 (1,1)   1

  Item 1 (1,2)   2

  Item 1 (1,3)   4
For d = LBound(arcflow(), 1) To UBound(arcflow(), 1)
    For a = LBound(arcflow(), 2) To UBound(arcflow(), 2)
        If a = 1 Then
        fromnode = arcflow(d, a)
        ElseIf a = 2 Then
        tonode = arcflow(d, a)
        ElseIf a = 3 Then
        flow = arcflow(d, a)
        'write into node-node matrix
        Sheets("FlowDecomp_Solve").Range("nodenodemtrx").Cells(fromnode, tonode).value = 1
        End If
    Next a
Next d