Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Suchen/Vergleichen/Informieren | Herbers Excel-Forum


Betrifft: Suchen/Vergleichen/Informieren von: Karsten
Geschrieben am: 12.01.2012 17:50:36

Ich habe hier ein Problem und suche nach einer Lösung.
Mein Problem lautet.
Ich habe in einer Tabelle Datensätze von Fahrzeugen gespeichert. z.B. in Spalte c eine Fahrgestellnummer. Es kann aber auch sein das in Spalte d, und Spalte e noch andere Fahrgestellnummern erfasst sind.

In Spalte a wurde ein Bearbeitungsvermerk eingetragen.

Nun haben wir ein neues Jahr und ich beginne mit der Tabelle von vorne.
Die Datensätze kommen online und werden eingefügt.

Ziel ist es das Excel automatisch oder per Befehl prüft, ob es den Wert (die Fahrgestellnummer) in den Spalten c, d,e bereits in der alten Tabelle gab und wenn ja, dann den Bearbeitungsvermerk aus der jeweiligen Zeile alt a, dann in die neue Tabelle in z.B Feld f der jeweiligen Zeile einträgt einträgt.

Vielleicht fällt Ihnen dazu was ein.

  

Betrifft: AW: Suchen/Vergleichen/Informieren von: fcs
Geschrieben am: 12.01.2012 19:37:47

Hallo Karsten,

der Abgleich funktioniert mit folgendem Makro. Die Fahrgestellnummern dürfen jedoch nicht mehrfach in der Altdatei vorkommen, damit es korrekt funktioniert.

Es werden in dieser Version immer alle Zeilen der neuen Datei mit der Alt-Datei abgeglichen.

Gruß
Franz

Sub AlteFahrGestellNr_abgleichen()
  Dim wbNeu As Workbook, wksNeu As Worksheet
  Dim wbAlt As Workbook, wksAlt As Worksheet, strNameAlt As String, rngAlt As Range
  Dim lngZeile As Long, lngZeileStart As Long
  Dim varSuchen As Variant, lngSpalte As Integer
  Dim rngSuchen As Range
  
  Set wbNeu = ActiveWorkbook
  Set wksNeu = wbNeu.Worksheets(1)                     'ggf. anpassen
  wksNeu.Activate
  lngZeileStart = 2   'Zeile ab der die Fahrgestell-Nrn abgeglichen werden sollen
  
  strNameAlt = "C:\Users\Public\Test\DateiAlt.xls"      'anpassen - Name der Altdatei muss _
                                                  verschieden von der neuen Datei sein !!
  'Altdatei öffnen
  Set wbAlt = Workbooks.Open(Filename:=strNameAlt, ReadOnly:=True)
  Set wksAlt = wbAlt.Worksheets(1)                      'ggf. anpassen
  
  With wksAlt
    lngZeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
    'Zellbereich in Altdatei, der durchsucht werden soll - hier Spalten C bis E
    Set rngAlt = .Range(.Cells(2, 3), .Cells(lngZeile, 5))
  End With
  
  Application.ScreenUpdating = False
  With wksNeu
    'Zeilen in neuer Datei abarbeiten
    lngZeile = .Cells.SpecialCells(xlCellTypeLastCell).Row
    For lngZeile = lngZeileStart To lngZeile
      For lngSpalte = 3 To 5 'Spalte C bis E - Spalten mit den Fahrgestell-Nrn.
        varSuchen = .Cells(lngZeile, lngSpalte).Value
        If varSuchen <> "" Then
          'Suchbegriff in Altdatei suchen
          Set rngSuchen = rngAlt.Find(what:=varSuchen, LookIn:=xlValues, lookat:=xlWhole)
          If Not rngSuchen Is Nothing Then
            'Vermerk aus Spalte A der Alt-Datei in Spalte F der Neu-Datei übertragen
            wksNeu.Cells(lngZeile, 6).Value = wksAlt.Cells(rngSuchen.Row, 1).Value
            Exit For
          End If
        End If
      Next
    Next
  End With
  'Altdatei wieder schliessen
  wbAlt.Close savechanges:=False
  
  Application.ScreenUpdating = True
  MsgBox "Abgleich mit Altdatei ist abgeschlossen", vbInformation + vbOKOnly, _
        "Ableich Fahrgestellnummern"
End Sub