Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wertevergleich mit anderer Tabelle

Wertevergleich mit anderer Tabelle
17.11.2006 09:33:41
Metman
Guten Morgen,
ich steh seit 2 Tagen vor einem unlösbarem Problem. Entweder hab ich irgendwo einen Fehler oder ich habs falsch programmiert.
Zu meinem Problem : Tabelle "Datenbasis" und Tabelle "Import". Es müssen Werte aus Datenbasis mit werten aus Import verglichen werden.
bsp.:
Datenbasis; Spalte B
12ABCD34
xx5555zz
88000011
-> Prio = 12, PGN = ABCD, SA = 34, das sind die 3 Bereiche. Identifier is der ganze String.
-Prio = xx, PGN = 5555, SA = zz usw usf.
In Import in Spalte D sind importierte Werte die genauso aufgebaut sind. Bis zu 40000 Werte.
So, mein Problem ist, das zuerst der Identifier (der ganze String) in Import gesucht werden muss, wenn vorhanden soll in Datenbasis zwei Zellen grün eingefärbt werden. Wenns nicht vorhanden ist, rot einfärben. Das funktioniert auch alles super.
So nun kommts. Ich muss, wenn der Identifier nicht vorhanden ist, prüfen(danach im Else zweig?) ob PGN vorhanden ist, wenn ja, überprüfen ob SA vorhanden ist, wenn ja, dann Prio vorhanden is. Wenn PGN nicht vorhanden ist, rot einfärben. Wenn SA ODER Prio nciht vorhanden ist, gelb einfärben.

Sub testauswertung6()
Dim zeilen_max As Long, zaehler As Long
Dim Prio As String, PGN As String, SA As String
Dim rngFind As Range
Dim PGNfind As Range
zeilen_max = Worksheets("Datenbasis").Cells(Rows.Count, 2).End(xlUp).Row
For zaehler = 8 To zeilen_max
Identifier = Worksheets("Datenbasis").Cells(zaehler, 2)
Prio = Left(Identifier, 2)
PGN = Mid(Identifier, 3, 4)
SA = Right(Identifier, 2)
If Identifier <> "" Then
With Worksheets("imported").Range("D:D")
Set rngFind = .Find(Identifier, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchByte:=False)
If Not rngFind Is Nothing Then
If Mid((rngFind.Text), 3, 4) = PGN And Right((rngFind.Text), 2) = SA And Left((rngFind.Text), 2) = Prio Then
Worksheets("Datenbasis").Cells(zaehler, 2).Interior.ColorIndex = 4
Worksheets("Datenbasis").Cells(zaehler, 9) = "Identifier vorhanden"
Worksheets("Datenbasis").Cells(zaehler, 9).Interior.ColorIndex = 4
Else
Worksheets("Datenbasis").Cells(zaehler, 2).Interior.ColorIndex = 3
Worksheets("Datenbasis").Cells(zaehler, 9) = "Identifier n. vorhanden"
Worksheets("Datenbasis").Cells(zaehler, 9).Interior.ColorIndex = 3
End If
End If
End With
End If
Next zaehler
End Sub

Ich komm auf keinen grünen zweig. Das Problem ist, ich such zuerst nach dem ganzen string. Ich weiß nicht wie ich, wenn der ganze String nicht vorhanden ist, nach PGN+SA+Prio suchen soll.
Jemand ne Ahnung?
Bin mit meinem Latein am Ende
gruß

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wertevergleich mit anderer Tabelle
17.11.2006 10:06:21
PeterB
Hallo Metman,
deine letzten Kommentare und die Fragestellung sind der Schlüssel.
Wenn du die Zeile ... rngfind = .find vorher mit On error resume next absicherst und unmittelbar darauf nach dem Wert von Err abfragst:
If Err 0 then
... Code für nicht vorhanden
Hier dann: Err = 0 oder on error goto 0, damit dir diese Möglichkeit auch beim evtl. folgenden .find zur Verfügung steht.
else
... Code für vorhanden
End if
kannst du jede beliebige Unterscheidung treffen.
Gruß
Peter
AW: Wertevergleich mit anderer Tabelle
17.11.2006 10:47:34
Metman
Hallo Peter,
danke für deine Antwort.

Sub testauswertung6()
Dim zeilen_max As Long, zaehler As Long
Dim Prio As String, PGN As String, SA As String
Dim rngFind As Range
Dim PGNFind As Range
Dim Err
zeilen_max = Worksheets("Datenbasis").Cells(Rows.Count, 2).End(xlUp).Row
For zaehler = 8 To zeilen_max
Identifier = Worksheets("Datenbasis").Cells(zaehler, 2)
Prio = Left(Identifier, 2)
PGN = Mid(Identifier, 3, 4)
SA = Right(Identifier, 2)
If Identifier <> "" Then
With Worksheets("imported").Range("D:D")
On Error Resume Next
Set rngFind = .Find(Identifier, LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, MatchByte:=False)
If Err <> 0 Then
Worksheets("Datenbasis").Cells(zaehler, 2).Interior.ColorIndex = 3
Worksheets("Datenbasis").Cells(zaehler, 9) = "Identifier n. vorhanden"
Worksheets("Datenbasis").Cells(zaehler, 9).Interior.ColorIndex = 3
On Error GoTo 0
'Soll die Unterscheidung
' - hier rein?
Else
Worksheets("Datenbasis").Cells(zaehler, 2).Interior.ColorIndex = 4
Worksheets("Datenbasis").Cells(zaehler, 9) = "Identifier vorhanden"
Worksheets("Datenbasis").Cells(zaehler, 9).Interior.ColorIndex = 4
End If
End With
End If
Next zaehler
End Sub

Meinst du das so?
Brauch ich dazu noch eine zweite .find (.find(PGN...) ?
Oder hab ich das jetzt nicht kapiert?
gruß
metman
Anzeige
AW: Wertevergleich mit anderer Tabelle
17.11.2006 14:15:15
PeterB
Hallo Metman, probiers mal damit:

Sub testauswertung6()
Dim zeilen_max As Long, zaehler As Long
Dim Prio As String, PGN As String, SA As String
Dim rngFind As Range
Dim PGNFind As Range
'Dim Err                            'Err ist eine eingebaute Variable
zeilen_max = Worksheets("Datenbasis").Cells(Rows.Count, 2).End(xlUp).Row
For zaehler = 8 To zeilen_max
Identifier = Worksheets("Datenbasis").Cells(zaehler, 2)
Prio = Left(Identifier, 2)
PGN = Mid(Identifier, 3, 4)
SA = Right(Identifier, 2)
If Identifier <> "" Then
On Error Resume Next
Set rngFind = Worksheets("imported").Range("D:D").Find(Identifier, _
LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, MatchByte:=False)
If Err <> 0 Then 'Kein Treffer; Fehler
Worksheets("Datenbasis").Cells(zaehler, 2).Interior.ColorIndex = 3
Worksheets("Datenbasis").Cells(zaehler, 9).value = "Identifier n. vorhanden"
Worksheets("Datenbasis").Cells(zaehler, 9).Interior.ColorIndex = 3
On Error GoTo 0
Else 'Treffer vorhanden, kein Fehler: Err = 0
Worksheets("Datenbasis").Cells(zaehler, 2).Interior.ColorIndex = 4
Worksheets("Datenbasis").Cells(zaehler, 9).value = "Identifier vorhanden"
Worksheets("Datenbasis").Cells(zaehler, 9).Interior.ColorIndex = 4
End If
End If
Next zaehler
Set rngFind = Nothing
End Sub

Gruß
Peter
Anzeige
AW: Wertevergleich mit anderer Tabelle
17.11.2006 11:15:25
Metman
Ne, hab grad voll den Blackout.
Funzt nichts :(
AW: Wertevergleich mit anderer Tabelle
17.11.2006 16:12:24
PeterB
Hi Metman,
ich hab' gerade für jimmypikfein, ein paar Zeilen weiter zurück, eine sehr ähnliche Lösung gebastelt.
Kannst dir von dort runterladen.
Viel glück
Peter
AW: Wertevergleich mit anderer Tabelle
17.11.2006 18:43:29
Metman
Guten Abend Peter,
Danke, ich werde das morgen früh angucken. Habe heute zuviel Codes gesehen und kann einfach nich mehr.
Melde mich morgen obs geklappt hat oder nicht.
Gruß
Metman

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige