Thema Datum  Von Nutzer Rating
Antwort
31.01.2016 12:41:54 Magdalena
NotSolved
31.01.2016 20:19:35 BigBen
NotSolved
31.01.2016 20:33:02 BigBen
NotSolved
Blau Daten suchen in anderen Tabellen
01.02.2016 01:43:35 Gast19533
NotSolved

Ansicht des Beitrags:
Von:
Gast19533
Datum:
01.02.2016 01:43:35
Views:
651
Rating: Antwort:
  Ja
Thema:
Daten suchen in anderen Tabellen

Moin! Also unter der Annahme, dass deine Tabellen drei verschiedene Tabellenblätter sind (die Karteireiter unten) hätte ich hier eine andere Möglichkeit. Ich gehe zudem mal davon aus, dass die Artikel in Tabelle 1 nur einmal vorkommen - wäre sonst prblematisch, wenn die dann auch in Tabelle 2 sind. Würde dann wohl eine Mehrfacherfassung werden. Die erste Zeile ist anscheinden immer die Überschrift. Die Zusammenfassung wird in einem vierten Blatt eingetragen, dass extra dafür vom Programm angelegt wird. Viele Grüße

Option Explicit

Sub tabellen_verwurschteln()
Dim eins
Dim zwei
Dim drei
Dim neu
Dim ende1 As Long
Dim ende2 As Long
Dim ende3 As Long
Dim zeile As Long
Dim artikel()
Dim i As Long
Dim j As Long
Dim k As Long

Application.ScreenUpdating = False

Set eins = Worksheets(1)
Set zwei = Worksheets(2)
Set drei = Worksheets(3)

Worksheets.Add after:=Worksheets(Worksheets.Count)
Set neu = ActiveSheet
neu.Name = "Zusammenfassung"

neu.Cells(1, 1) = "Artikelnr"
neu.Cells(1, 2) = "Bezeichnung"
neu.Cells(1, 3) = "Karton"
neu.Cells(1, 4) = "xc"
neu.Cells(1, 5) = "Big"

zeile = 2

ende1 = eins.Cells(Rows.Count, 1).End(xlUp).Row
ende2 = zwei.Cells(Rows.Count, 1).End(xlUp).Row
ende3 = drei.Cells(Rows.Count, 1).End(xlUp).Row

ReDim artikel(0)
artikel(0) = 0

For i = 2 To ende1
    If eins.Cells(i, 1) <> "" Then
            artikel(0) = artikel(0) + 1
            ReDim Preserve artikel(artikel(0))
            artikel(artikel(0)) = eins.Cells(i, 1)
            
            If Application.WorksheetFunction.CountIf(zwei.Columns(1), eins.Cells(i, 1)) > 0 Then
                For j = 2 To ende2
                    If zwei.Cells(j, 1) <> "" Then
                        If zwei.Cells(j, 1) = eins.Cells(i, 1) Then
                            neu.Cells(zeile, 1) = eins.Cells(i, 1)
                            neu.Cells(zeile, 2) = eins.Cells(i, 2)
                            neu.Cells(zeile, 3) = zwei.Cells(j, 2)
                            neu.Cells(zeile, 4) = zwei.Cells(j, 3)
                            For k = 1 To ende3
                                If zwei.Cells(j, 2) = drei.Cells(k, 1) Then neu.Cells(zeile, 5) = drei.Cells(k, 3)
                            Next k
                            
                            zeile = zeile + 1
                        End If
                    End If
                Next j
            Else
                neu.Cells(zeile, 1) = eins.Cells(i, 1)
                neu.Cells(zeile, 2) = eins.Cells(i, 2)
                zeile = zeile + 1
            End If
        
    End If
Next i

For i = 2 To ende2
    If zwei.Cells(i, 1) <> "" Then
        If UBound(Filter(artikel, zwei.Cells(i, 1))) > -1 Then
        Else
            neu.Cells(zeile, 1) = zwei.Cells(i, 1)
            neu.Cells(zeile, 3) = zwei.Cells(i, 2)
            neu.Cells(zeile, 4) = zwei.Cells(i, 3)
            For k = 1 To ende3
                If zwei.Cells(i, 2) = drei.Cells(k, 1) Then neu.Cells(zeile, 5) = drei.Cells(k, 3)
            Next k
            zeile = zeile + 1
        End If
    End If
Next i
        
Set eins = Nothing
Set zwei = Nothing
Set drei = Nothing
Set neu = Nothing

Application.ScreenUpdating = True

End Sub

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
31.01.2016 12:41:54 Magdalena
NotSolved
31.01.2016 20:19:35 BigBen
NotSolved
31.01.2016 20:33:02 BigBen
NotSolved
Blau Daten suchen in anderen Tabellen
01.02.2016 01:43:35 Gast19533
NotSolved