Excel-多个ID之间的连接

Excel-多个ID之间的连接,excel,relationships,Excel,Relationships,我有一个Excel表格,有四列: ID1排序表 ID 2 ID 2的属性A ID 2的属性B Excel表格显示了ID 1和ID 2之间的1对1关系/合作关系-ID 1的列告诉我正在引用谁,而ID 2的列告诉我ID 1的合作伙伴。ID 1的单个值可以与ID 2的多个值配对。列表中较早的ID 2的值可以稍后作为ID 1列出,并与新值合作。理论上,您可以在ID之间建立相当长的关系链,这取决于它们的合作方式 我希望能够运行一个查询,告诉我与特定ID相关的所有ID,无论它们之间的距离有多远。例如,如果A

我有一个Excel表格,有四列:

ID1排序表 ID 2 ID 2的属性A ID 2的属性B Excel表格显示了ID 1和ID 2之间的1对1关系/合作关系-ID 1的列告诉我正在引用谁,而ID 2的列告诉我ID 1的合作伙伴。ID 1的单个值可以与ID 2的多个值配对。列表中较早的ID 2的值可以稍后作为ID 1列出,并与新值合作。理论上,您可以在ID之间建立相当长的关系链,这取决于它们的合作方式

我希望能够运行一个查询,告诉我与特定ID相关的所有ID,无论它们之间的距离有多远。例如,如果A与B相关,B与C和D相关,D与E相关,当我在A上运行查询时,我希望看到A与B、C、D和E相关,因为它们都共享一个连接。它不必是单个实例的查询—它可以是具有相关ID的唯一ID值的完整列表


我正在用Excel进行头脑风暴,并通过公式进行访问,但我画的是空白。关于如何实现这一点,您有什么想法吗?

在ORACLE SQL中,我将使用CONNECT BY/START WITH子句进行分层查询。MS Access不支持此操作

在Excel中,我在管理者及其报告之间的层次结构上下文中使用了一个小型VBA。它被递归调用并打印层次结构级别。所以,如果您只想知道谁与谁有关联,请筛选所有非空项

Sub PrintHierarchy()
Dim T As Range, Idx As Integer, Level As String, Root As String

    Root = Selection
    Set T = [DataTable]

    'start recursion
    GetReport T, Root, "1"

End Sub

Sub GetReport(T As Range, Boss As String, Level As String)
Dim Idx As Integer, Num As Integer

    Idx = 2
    Num = 1

    Do While T(Idx, 1) <> ""
        If T(Idx, 1) = Boss Then
            T(Idx, 3) = "'" & Level & "." & Num
            Num = Num + 1

            GetReport T, T(Idx, 2), T(Idx, 3)

        End If
        Idx = Idx + 1
    Loop
End Sub
在开始本例之前,选择列[A:C]并将其命名为DataTable。然后将光标放置在根节点的“凸台”列上,并运行“子打印层次结构”:


您使用了[sql]标记。您是将此数据存储在一个独立的Excel表中,还是要从SQL表中查询?抱歉-我错误地添加了SQL。数据位于一个独立的Excel表中。