Hello, I found some code on the internet and tinkered with it to list all the members of a group. However, I want to reverse the code so it shows all the groups a list of members are in.

E.g.

User1 , Group1
User1 , Group 2
User2 , Group 2
User3 , Group3
Etc

The code I use to get Memeber of Groups is appended below. Please could someone help me "reverse" the result.

Many thanks
Tom

Sub OutputGroupMembership()
    Dim varGroups, varItem
    Dim wksOut As Worksheet
    Dim rngOut As Range
    Dim varMembers
    Dim lngIndex As Long
    Dim strMemberlist As String
        Worksheets("GROUPS").Activate
    ' this is the worksheet where the list will go
    ' adjust as required
    Set wksOut = ActiveSheet
    With wksOut
        ' first output cell
        Set rngOut = .Range("A14")
    End With
    ' this is the list of groups you want to get the members for
    
          varGroups = Range("MAIN!A20:A39").Value

      'Looping structure to look at array.
      For i = 1 To UBound(varGroups)
      Next
    
    For Each varItem In varGroups
        ' output group name
        With rngOut
            .Value = varItem
        End With
        ' move down a row
        Set rngOut = rngOut.Offset(0)
        ' get member list
        ' returned as a comma separated list
        strMemberlist = GetGroupUsers(varItem)
        ' split list into an array
        varMembers = Split(strMemberlist, ",")
        ' loop and output member IDs
        
        For lngIndex = LBound(varMembers) To UBound(varMembers)
        rngOut.Value = varItem
            rngOut.Offset(, 1).Value = varMembers(lngIndex)
            Set rngOut = rngOut.Offset(1)
        Next lngIndex

    Next varItem
    With wksOut
        Rw = .Cells.Rows.Count
        Range(Cells(Rw, "A").End(3)(2), Cells(Rw, "A")).EntireRow.Hidden = True
    End With
End Sub
Function GetGroupUsers(ByVal strGroupName As String) As String

    Dim objGroup, objDomain, objMember
    Dim strMemberlist As String, strDomain As String
    On Error Resume Next
    Set objDomain = GetObject("LDAP://rootDse")
    strDomain = objDomain.Get("dnsHostName")
    
    Set objGroup = GetObject("WinNT://" & strDomain & "/" & strGroupName & ",group")
    
    For Each objMember In objGroup.Members
        strMemberlist = strMemberlist & "," & objMember.Name
    Next objMember
    ' strip off the leading comma
    GetGroupUsers = Mid$(strMemberlist, 2)

End Function