Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

datenvergleich

datenvergleich
12.03.2008 10:36:01
FH

Hallo,
ich hätte mal eine Frage/Bitte bzgl. eines vba skripts. Grundsätzlich vergleiche ich Zeilen mit einer Nummer aus einem Tab mit denen eines anderen. Wenn sie gleich sind dann wird geprüft ob ein anderer Wert schon darin steht und diverse andere Sachen. Das ganze läuft mit einer For schleife in der eine weiter For schleife eingebettet ist. Meine Frage wäre die. Gibt es eine andere Methode die Daten zu vergleichen? Sprich zu prüfen ob in einem Tab eine Zahl vorhanden ist die auch im anderen ist und dann, wenn das der Fall ist die If anweisungen durchzulaufen? (Find methode?)
Und wenn ja wie würde das ungefähr aussehen?
Die Methode die ich benutze ist weder elegant noch sehr effizient bei größeren Datenmengen...
danke im Voraus
FM


Sub autoupdate()
Dim ibound, obound
Dim anzZeilen2, anzzeilen As Integer
anzZeilen2 = 0
AnzZeilen = 0
anzZeilen2 = Sheets("data").Cells(Rows.Count, 8).End(xlUp).Row
AnzZeilen = Sheets(1).Cells(Rows.Count, 8).End(xlUp).Row
For obound = 3 To anzZeilen2 Step 1
For ibound = 15 To AnzZeilen Step 1
If Sheets("data").Cells(obound, 8).Value = Sheets(1).Cells(ibound, 3).Value Then
If Not Sheets("data").Cells(obound, 10).Value = Sheets(1).Cells(ibound, 22).Value  _
Then
If Not Sheets("data").Cells(obound, 10).Value < 0 Then
Sheets(1).Cells(ibound, 22).Value = Sheets("data").Cells(obound, 10).Value
Sheets(1).Cells(ibound, 22).Font.ColorIndex = 9
Else:   Sheets(1).Cells(ibound, 22).Value = -1
Sheets(1).Cells(ibound, 22).Font.ColorIndex = 9
Sheets(1).Cells(ibound, 22).Interior.ColorIndex = 6
End If
End If
End If
Next ibound
Next obound
End Sub


2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: datenvergleich
12.03.2008 17:00:37
Heinz
Hi,
da kommst du um die Schleifen nicht herum, find hilft da auch nicht.
Die Deklarationen sind falsch:
Dim ibound, obound
Dim anzZeilen2, anzzeilen As Integer
richtig:
Dim ibound As Long, obound As Long
Dim anzZeilen2 As Long, anzzeilen As Long
mfg Heinz

AW: datenvergleich
12.03.2008 17:35:15
fcs
Hallo FH,
makro müsste etwa so aussehen mit Suchfunktion:


Sub autoupdate()
Dim ibound As Long, obound As Long
Dim anzZeilen2 As Long
Dim wsData As Worksheet, ws1 As Worksheet, Zelle As Range, Adresse1 As String
Dim rngBereich As Range
Set wsData = ActiveWorkbook.Worksheets("data")
Set ws1 = ActiveWorkbook.Sheets(1)
With wsData
anzZeilen2 = .Cells(.Rows.Count, 8).End(xlUp).Row
End With
With ws1
'zu durchsuchender bereich
Set rngBereich = .Range(.Cells(15, 3), .Cells(.Cells(.Rows.Count, 8).End(xlUp).Row, 3))
For obound = 3 To anzZeilen2 Step 1
'im Suchbereich nach dem Wert in "data" spalte 8 suchen
Set Zelle = rngBereich.Find(What:=wsData.Cells(obound, 8).Value, LookIn:=xlValues, _
lookat:=xlWhole)
Adresse1 = Zelle.Address '1. Fundstelle merken
Do
If Not Zelle Is Nothing Then
ibound = Zelle.Row
If Not wsData.Cells(obound, 10).Value = .Cells(ibound, 22).Value Then
If Not wsData.Cells(obound, 10).Value < 0 Then
.Cells(ibound, 22).Value = wsData.Cells(obound, 10).Value
.Cells(ibound, 22).Font.ColorIndex = 9
Else
.Cells(ibound, 22).Value = -1
.Cells(ibound, 22).Font.ColorIndex = 9
.Cells(ibound, 22).Interior.ColorIndex = 6
End If
End If
End If
Set Zelle = rngBereich.FindNext(After:=Zelle)
Loop Until Zelle Is Nothing Or Adresse1 = Zelle.Address
Next obound
End With
End Sub


Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige