Thema Datum  Von Nutzer Rating
Antwort
18.11.2022 13:19:06 Bernd
Solved
18.11.2022 13:23:13 Gast11122
Solved
18.11.2022 14:19:55 Bernd
Solved
Blau 2 Dateien zwei Spalten werte suchen und wenn nicht vorhanden mit Werten füllen
18.11.2022 16:13:07 Gast54888
Solved
18.11.2022 17:21:34 Gast53268
Solved
21.11.2022 08:45:49 Bernd
Solved
21.11.2022 12:38:19 Gast91815
Solved
21.11.2022 12:41:13 Bernd
Solved
21.11.2022 14:23:33 Bernd
Solved
21.11.2022 12:40:24 Bernd
Solved
21.11.2022 15:44:51 Bernd
Solved
22.11.2022 16:24:16 Bernd
Solved

Ansicht des Beitrags:
Von:
Gast54888
Datum:
18.11.2022 16:13:07
Views:
765
Rating: Antwort:
 Nein
Thema:
2 Dateien zwei Spalten werte suchen und wenn nicht vorhanden mit Werten füllen

Leider muss ich dir sagen, dass ich nicht verstehe wo das Problem liegt. Der Programmablaufplan ist bestenfalls unvollständig (und damit nicht zu gebrauchen/falsch).


Du willst etwas einfaches? Einfacher als das Folgende, geht nicht:

Hier wird exemplares mit eindimensionalen Arrays gearbeitet. Der Code sollte selbsterklärend sein.

Option Explicit

Sub Suche1()
  
  Dim vntMeldungsnummern As Variant
  Dim vntDatenexport As Variant
  
  'Meldungsnummern in der Dokumentation
  vntMeldungsnummern = Array(12, 34)
  
  'Meldungsnummern im Datenexport
  vntDatenexport = Array(34, 56, 78, 12)
  
  Dim blnFound As Boolean
  Dim i As Long
  Dim j As Long
  
  For i = LBound(vntDatenexport) To UBound(vntDatenexport)
    
    blnFound = False
    For j = LBound(vntMeldungsnummern) To UBound(vntMeldungsnummern)
      If vntMeldungsnummern(j) = vntDatenexport(i) Then
        blnFound = True
        Exit For
      End If
    Next
    
    If blnFound Then
      Debug.Print "Meldungsnummer '" & vntDatenexport(i) & "' existiert bereits in der Dokumentation"
    Else
      Debug.Print "Meldungsnummer '" & vntDatenexport(i) & "' fehlt in der Dokumentation"
    End If
    
  Next
  
End Sub

Das gleiche geht natürlich auch direkt mit Daten von einem Tabellenblatt. Diese spricht man über ein Range-Objekt an.

Auf dem Tabellenblatt "Dokumentation" steht in D1 := 12 und in D2 := 34.

Auf dem Tabellenblatt "Datenexport (1)" steht in A1 := 34, in A2 := 56, in A3 := 78 und A4 := 12.

Auch dieser Code sollte selbsterklärend sein und ist identisch zu dem von oben.

Public Sub Suche2()
  
  Dim rngDokumentation As Excel.Range
  Dim rngDatenexport As Excel.Range
  
  'Meldungsnummern in der Dokumentation
  With Worksheets("Dokumentation")
    Set rngDokumentation = .Range("D1", .Cells(.Rows.Count, "D").End(xlUp))
  End With
  
  'Meldungsnummern im Datenexport
  With Worksheets("Datenexport (1)")
    Set rngDatenexport = .Range("A1", .Cells(.Rows.Count, "A").End(xlUp))
  End With
  
  Dim rngDatenexportNr As Excel.Range
  Dim rngDokumentationNr As Excel.Range
  
  For Each rngDatenexportNr In rngDatenexport.Cells
    
    Set rngDokumentationNr = rngDokumentation.Find( _
                              What:=rngDatenexportNr.Value, _
                              LookIn:=xlValues, _
                              LookAt:=xlWhole, _
                              SearchOrder:=xlByColumns, _
                              MatchCase:=False)
    
    If Not rngDokumentationNr Is Nothing Then
      Debug.Print "Meldungsnummer '" & rngDatenexportNr.Value & "' existiert bereits in der Dokumentation"
    Else
      Debug.Print "Meldungsnummer '" & rngDatenexportNr.Value & "' fehlt in der Dokumentation"
    End If
    
  Next
  
End Sub

Das der Tabellenblattname des Datenexports unterschiedlich lauten kann, ist uns in diesem Beispiel egal. Es geht ums allgemeine Prinzip.

 

Grüße


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