Конкатенация автоматически в VBA Excel - PullRequest
0 голосов
/ 09 июля 2019

У меня есть список устройств, на которых работают машины, в листе Excel.

Пример device A работает на machine X, B работает на Y, а другой device A работает на machine Z.Но иногда одни и те же устройства работают на нескольких машинах.

Можно ли объединить, чтобы показать, что A device работает на machine X,Z?

устройствах | машинах

A|X

B|Y

A|Z

I 'Я пытался объединить в Excel.Это работает, но список обновляется каждый час, поэтому мне нужно записать его макрос.Я также должен vlookup это в другой лист.

Я хочу, чтобы это выглядело так:

devices |машины

A |  X,Z

B | Y

1 Ответ

0 голосов
/ 09 июля 2019
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...