Microsoft Excel

Herbers Excel/VBA-Archiv

Auf Inhalt aus anderer Excel Tabelle zugreifen


Betrifft: Auf Inhalt aus anderer Excel Tabelle zugreifen von: Christopher
Geschrieben am: 06.07.2017 13:42:16

Servus Leute, ich stehe vor einem neuen Problem.

Also ich habe eine Excel Tabelle in der Namen und Stunden stehen.
Diese bin ich mit Hilfe eines Makros durchlaufen und habe mir ein Objekt erzeugt indem ich jeweils den Namen mit der dazugehörigen Stundenzahl eingespeichert habe:

Der code dazu:

Public Sub CSVtoArray()
    Dim members As Object
    Set members = CreateObject("Scripting.Dictionary")

    Dim row As Long
    Dim maxRow As Long
    Dim sheet As Worksheet
    Set sheet = ActiveWorkbook.Worksheets(1)
    

    maxRow = sheet.Cells(sheet.Rows.Count, "A").End(xlUp).row

    Dim curName As String
    Dim curHour As String

    
        curName = sheet.Cells(row, 1)
        curHour = sheet.Cells(row, 7)
        
        
        If Not members.Exists(curName) Then
            Call members.Add(curName, curHour)
            Else
            members.Item(curName) = Val(members.Item(curName)) + Val(curHour)
        End If
        
End Sub
Das funktioniert soweit auch ganz ordentlich.
Nun habe ich eine zweite Excel Tabelle in der die Selben Namen stehen aber andere Informationen wie z.B. eine Adresse.

Ich möchte jetzt also für jedes Memberpaar in meinem Array überprüfen ob der Name auch in der anderen Excel Tabelle enthalten ist und wenn ja möchte ich den Array Eintrag z.B. um die Stadt erweitern.
Die Spalte in der die Stadt steht ist immer gleich.

Ich stehe total auf dem Schlauch und hoffe mir kann jemand weiterhelfen.

Liebe Grüße

  

Betrifft: AW: Auf Inhalt aus anderer Excel Tabelle zugreifen von: mmat
Geschrieben am: 06.07.2017 15:14:46

Hallo,

ich hab zwar keine Ahnung von Skripting Dicktionary und vermute auch, das man das mit VBA-Bordmitteln lösen kann, aber:

Dem Objekt "members" müsstetst du doch irgendwie mal sagen, wo denn die Daten stehen. Auf was soll members.Exists denn zugreifen ???

vg, MM


  

Betrifft: AW: Auf Inhalt aus anderer Excel Tabelle zugreifen von: Christian
Geschrieben am: 06.07.2017 16:02:14

Hallo,
ein Dictionary (assoziatives Array) besteht immer aus Name-Werte-Paaren. Du kannst als Wert aber auch ein Array übergeben.

Bsp:

Option Explicit

Sub TestIt()
    Dim objDic As Object
    Dim i As Long
    Dim strName As String
    Dim dblHour As Double
    Dim vntTmp
    
    Set objDic = CreateObject("Scripting.Dictionary")
    
    With Sheets("Tabelle1")
        For i = 1 To 10
            strName = .Cells(i, 1).Value
            dblHour = .Cells(i, 2).Value
            If Not objDic.Exists(strName) Then
                objDic(strName) = Array(dblHour, "")
            Else
                vntTmp = objDic(strName)
                vntTmp(0) = vntTmp(0) + dblHour
                objDic(strName) = vntTmp
            End If
        Next
    End With
    
    With Sheets("Tabelle2")
        For i = 1 To 5
            strName = .Cells(i, 1).Value
            If objDic.Exists(strName) Then
                vntTmp = objDic(strName)
                vntTmp(1) = .Cells(i, 2).Value
                objDic(strName) = vntTmp
            End If
        Next
    End With
    
    i = 1
    With Sheets("Tabelle3")
        For Each vntTmp In objDic.Keys
            .Cells(i, 1) = vntTmp
            .Cells(i, 2).Resize(, 2) = objDic(vntTmp)
            i = i + 1
        Next
    End With
End Sub
Gruß
Christian


  

Betrifft: AW: Auf Inhalt aus anderer Excel Tabelle zugreifen von: mmat
Geschrieben am: 06.07.2017 16:42:40

Aha.

Du liest also alle Zeilen aus sheet in das Dings ein. Mehr macht der (vom Anfang) Code nicht. Learned what ...

Danach willst du in der 2. Liste nach Einträgen suchen.

Ist es wirklich erforderlich, die erste Liste permanent vollständig im Speicher zu halten ?
Gehe ich recht in der Annahme, das du nach einen zusammengesetzten Wert aus Name und Hour suchst?
Oder nur nach dem Namen?

vg, MM


Beiträge aus den Excel-Beispielen zum Thema "Auf Inhalt aus anderer Excel Tabelle zugreifen"