zwei Spalten via VBA vergleichen
#1
Hallo zusammen,
ich bräuchte mal Hilfe!

Ich möchte in einem Tabellenblatt zwei Spalten via VBA vergleichen.

In Spalte E ab Zeile 5 bis 60 steht ein Wert, der über eine Formel Sverweis geholt wird. (Passend zur Fertigprodukt Materialnummer)
In Spalte J ab Zeile 5 bis 60 steht ebenfalls ein Wert, der über den Sverweis geholt wird. (Passend zur Rohprodukt Materialnummer)

Beide Werte z.B. E5 und J5 oder E25 und J25 müssen übereinstimmen, wenn nicht soll der Wert in Spalte J rot werden.

Ich hatte dies schon über die bedingte Formatierung hinbekommen, nur werden in dieser Tabelle immer wieder Zeilen gelöscht und hinzugefügt und die Tabelle bläht sich dann durch die Vervielfältigung der bedingten Formatierung sehr auf und wird immer größer, deshalb mein Wunsch dies über VBA zu realisieren.

Danke für Eure Hilfe im Voraus!
Gruß
Dietmar

Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.  
Top
#2
Hallo,

Zitat:nur werden in dieser Tabelle immer wieder Zeilen gelöscht und hinzugefügt

dann solltet ihr mal eure Arbeitsweise überdenken.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#3
Hallo Klaus-Dieter,


schön von dir zu hören und schade das es dein Forum nicht mehr gibt, das war wirklich klasse.


Ja du hast recht, aber mit dieser Tabelle arbeitet jemand, der keine Ahnung von Excel hat, also noch weniger als ich   :22:
 


Die Tabelle wird als Arbeitsplan in der AV genutzt was bedeutet dass in dieser Tabelle Aufträge stehen die abgearbeitet werden, am anderen morgen löscht der Kollege die Zeilen mit den abgearbeiteten Aufträgen, zieht die Formeln nach unten und schreib neue Aufträge darunter.

Dabei wie schon erwähnt bläht sich die bedingte Formatierung so auf, dass die Datei immer größer wird und nicht mehr Per Mail gesendet werden kann.

Deshalb hätte ich hier mit eurer Hilfe, gerne eine VBA-Lösung.
Gruß
Dietmar

Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.  
Top
#4
Hallo Dietmar,
Sub aaa()
 Dim rngJ As Range, rngZ As Range
 For Each rngZ In Range("J5:J60")
   If rngZ.Value <> rngZ.Offset(, -5).Value Then
     rngZ.Font.ColorIndex = 3
   Else
     rngZ.Font.ColorIndex = -4105
   End If
 Next rngZ
End Sub
Gruß Uwe
Top
#5
Hallo Uwe,

ich danke dir wieder mal für deine schnelle Hilfe.

Ich habe den Code auf einen Comand Button gelegt und getestet funktioniert einwandfrei.


Nun wäre es ja gut, wenn er ohne Button sondern automatisch durchlaufen würde.


Ich habe bereits einen Code, der im Change Ereignis einige Materialnummern abgleicht und hier müsste ich nun deinen Code unterbringen könntest du mir hierbei nochmals helfen?
Vielen Dank!



Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim Bereich As Range
   Dim Zelle As Range
   Dim intIndex As Integer
   Dim rng As Range
   Set Bereich = Range("B5:z60")
   Set rng = Intersect(Target, Range("D5:D60"))
   If rng Is Nothing Then Exit Sub
   Application.EnableEvents = False
   For Each Zelle In rng
       Select Case Zelle.Value
                                            ' falls es unterschiedlicher Text wäre
           
           Case "2073642": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung"
           Case "2073644": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung"
           Case "2074487": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung"
           Case "2073140": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung"
           Case "2070577": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung, Metallseite markieren"
           
           
           
           
           Case "2078317": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit  KZ48 verwenden"
           Case "2078377": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit  KZ48 verwenden"
           Case "2078531": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit  KZ48 verwenden"
           Case "2078646": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit  KZ48 verwenden"
           Case "2072507": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit  KZ48 verwenden"
           Case "2072506": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit  KZ48 verwenden"
           Case "2069353": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit  KZ48 verwenden"
           
           
           Case Else: intIndex = -4142: 'Zelle.Offset(0, 19).Value = "" ' Spalte W leeren
       End Select
       If Zelle.Value <> "" Then
           Zelle.Offset(0, 21).Value = "SM3"
       Else
           Zelle.Offset(0, 21).Value = "" ' Spalte Y leeren
       End If
       'Zelle.Offset(0, 19).Value = "Dein Text für Alle" 'hier bei immer gleichem Text
       Bereich.Rows(Zelle.Row - 4).Interior.ColorIndex = intIndex
   Next
   Application.EnableEvents = True
End Sub
Gruß
Dietmar

Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.  
Top
#6
Hallo Dietmar,

Du schriebst von SVERWEIS-Formeln. Demnach müsste der Code in das Calculate-Ereignis.

Gruß Uwe
Top
#7
Hallo Uwe,

ich versuche das mal.
Vielen Dank für deine Hilfe
Gruß
Dietmar

Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.  
Top
#8
Hallo Uwe,
nochmals vielen Dank, klappt wie gewünscht. :100:

Gilt nun als erledigt
Gruß
Dietmar

Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.  
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste