首页 > 解决方案 > 在vba excel中自动连接

问题描述

我有一个在 excel 表中运行在哪些机器上的设备列表。

示例device A运行于machine XB运行于Y,另一个device A运行于machine Z。但有时相同的设备在多台机器上运行。

是否可以连接以显示A device正在运行machine X,Z

设备|机器

A|X

B|Y

A|Z

我试图在excel中连接。它可以工作,但列表每小时更新一次,所以我需要记录它的宏。我还得把vlookup它放到另一张纸上。

我希望它看起来像这样:

设备 | 机器

A |  X,Z

B | Y

标签: excelvba

解决方案


Sub MakeListCol()


Dim coll As New Collection
Dim c As Range
Dim sPair() As String
Dim sVal As String
Const cSep1 = "|"
Const cSep2 = ","

For Each c In Range("A:A")   ' suppose the "A|X", "B|Y" pairs are in column A
    If IsEmpty(c) Then Exit For ' finish
    sPair = Split(c.Value, cSep1)
    If UBound(sPair) > 0 Then
        On Error Resume Next
        sVal = coll(sPair(0))
        If Err.Number = 0 Then
            On Error GoTo 0
            sVal = sVal & cSep2 & sPair(1)
            coll.Remove (sPair(0))
        Else
            On Error GoTo 0
            sVal = sPair(0) & cSep1 & sPair(1)
        End If
        coll.Add sVal, sPair(0)
    End If
Next

'  here you have a list of all device-machines assignements in coll

Dim i As Long
For i = 1 To coll.Count
    Debug.Print coll.Item(i)
Next

End Sub

推荐阅读