einfaches VBA Marko...
iona
- vb-script
0 Jan Huss0 Axel Richter0 iona0 Axel Richter0 iona0 Axel Richter0 iona
0 iona
hi leute,
habe folgendes problem:
Im Feld 1 "Referenz-PISA befinden sich AHV-Nr.
Im Feld 2 "WPE" befinden sich auch AHV-Nr.
Ist nun eine AHV-Nr. vom Feld 1 im Feld 2 nicht vorhanden, soll dies im Feld 3 "nicht WPE" ausgegeben werden.
Sub Vergleichen()
Dim Referenz, WPE, nichtWPE As Integer
Dim found As Boolean
Referenz = 1
WPE = 1
nichtWPE = 1
Dim a, b As String
Do While Worksheets("Referenz-PISA").Cells(Referenz, 1) <> ""
found = False
Do While Worksheets("WPE").Cells(WPE, 1) <> ""
a = Worksheets("Referenz-PISA").Cells(Referenz, 1)
b = Worksheets("WPE").Cells(WPE, 1)
If Worksheets("Referenz-PISA").Cells(Referenz, 1) = Worksheets("WPE").Cells(WPE, 1) Then
found = True
Exit Do
End If
WPE = WPE + 1
Loop
If Not found Then
Worksheets("nichtWPE").Cells(nichtWPE, 1) = Worksheets("Referenz-PISA").Cells(Referenz, 1)
Worksheets("nichtWPE").Cells(nichtWPE, 2) = Worksheets("Referenz-PISA").Cells(Referenz, 2)
Worksheets("nichtWPE").Cells(nichtWPE, 3) = Worksheets("Referenz-PISA").Cells(Referenz, 3)
nichtWPE = nichtWPE + 1
End If
Referenz = Referenz + 1
Loop
Worksheets("nichtWPE").Select
MsgBox "Vergleich Abgeschlossen"
End Sub
hoffe habe gegen keine FAQ verstossen;)
thanks...
Hallo,
If Worksheets("Referenz-PISA").Cells(Referenz, 1) = Worksheets("WPE").Cells(WPE, 1) Then
Du vergleichst zwei Ranges. Du willst aber die Inhalte vergleichen...
If Worksheets("Referenz-PISA").Cells(Referenz, 1).Text = Worksheets("WPE").Cells(WPE, 1).Text Then
Sollte Dein Hauptroblem sein.
Gruß Jan Huss
Hallo,
habe folgendes problem:
Im Feld 1 "Referenz-PISA befinden sich AHV-Nr.
Im Feld 2 "WPE" befinden sich auch AHV-Nr.Ist nun eine AHV-Nr. vom Feld 1 im Feld 2 nicht vorhanden, soll dies im Feld 3 "nicht WPE" ausgegeben werden.
Ich rate mal, dass es sich um ein EXCEL-Problem handelt.
Sub Vergleichen()
Dim Referenz, WPE, nichtWPE As Integer
Dim found As BooleanReferenz = 1
WPE = 1
nichtWPE = 1Dim a, b As String
Do While Worksheets("Referenz-PISA").Cells(Referenz, 1) <> ""
'läuft in "Referenz-PISA" von A[Referenz] bis Ax, solange A[Referenz] nicht leer
found = False
Do While Worksheets("WPE").Cells(WPE, 1) <> ""
'läuft in "WPE" von A[WPE] bis Ax, solange A[WPE] nicht leer. !!Beginnt in A[WPE]!!
a = Worksheets("Referenz-PISA").Cells(Referenz, 1)
b = Worksheets("WPE").Cells(WPE, 1)
If Worksheets("Referenz-PISA").Cells(Referenz, 1) = Worksheets("WPE").Cells(WPE, 1) Then
found = True
Exit Do
'Ende, wenn gefunden mit WPE=x
End If
WPE = WPE + 1
'Durchlauf bis A[WPE] leer.
Loop
Schau Dir mal an, wo die Variable WPE auf 1 gesetzt wird, un wo sie es werden müsste.
viele Grüße
Axel
Hallo,
Ja, es handelt sich um ein Excelproblem
WPE = 1
Ich nehme an, das die Variable hier auf 1 gesetzt wird.
Aber ich kann dir nicht genau folgen.
was genau soll ich herausfinden??
kannst du mir evt. weiter helfen??
gruss iona
Hallo,
WPE = 1
Ich nehme an, das die Variable hier auf 1 gesetzt wird.
*g* Ja.
Bist Du mal gedanklich die Programmschleifen durchgegangen? Ich vereinfache mal:
Referenz = 1
WPE = 1
Do While Worksheets("Referenz-PISA").Cells(Referenz, 1) <> ""
'läuft in "Referenz-PISA" von A[Referenz] bis Ax, solange A[Referenz] nicht leer
found = False
Do While Worksheets("WPE").Cells(WPE, 1) <> ""
'läuft in "WPE" von A[WPE] bis Ax, solange A[WPE] nicht leer. !!Beginnt in A[WPE]!!
If Worksheets("Referenz-PISA").Cells(Referenz, 1) = Worksheets("WPE").Cells(WPE, 1) Then
found = True
Exit Do 'Ende, wenn gefunden mit WPE=x
End If
WPE = WPE + 1 'Durchlauf bis A[WPE] leer.
Loop
'Hier ist WPE entweder die Zeile, wo Übereinstimmung gefunden wurde oder die maximale Zeile
Referenz = Referenz + 1
Loop
Sollte die innere Schleife nicht _immer_ mit WPE=1 beginnen?
viele Grüße
Axel
Hallo
Sollte die innere Schleife nicht _immer_ mit WPE=1 beginnen?
Ist das nicht der Fall? Meiner Meinung nach beginnt die schleife immer mit WPE=1!
Mir ist aufgefallen, dass es evt. etwas mit der sortierung zutun hat!
grüsse
Hallo
Sollte die innere Schleife nicht _immer_ mit WPE=1 beginnen?
Ist das nicht der Fall? Meiner Meinung nach beginnt die schleife immer mit WPE=1!
Nein.
So siehts bei Dir aus:
Referenz = 1
WPE = 1
Do While Worksheets("Referenz-PISA").Cells(Referenz, 1) <> ""
...
Do While Worksheets("WPE").Cells(WPE, 1) <> ""
...
WPE = WPE + 1 'Nach dem ersten Durchlauf der äußeren Schleife, mit Referenz = 1, ist WPE nicht mehr _garantiert_ am Anfangswert 1.
Loop
Referenz = Referenz + 1
Loop
So sollte es aussehen:
Referenz = 1
Do While Worksheets("Referenz-PISA").Cells(Referenz, 1) <> ""
...
WPE = 1 'Hier wird der Anfangswert für WPE gesetzt.
Do While Worksheets("WPE").Cells(WPE, 1) <> ""
...
WPE = WPE + 1
Loop
Referenz = Referenz + 1
Loop
Mir ist aufgefallen, dass es evt. etwas mit der sortierung zutun hat!
Nein.
viele Grüße
Axel
Lady am verzweifeln...
danke zuerst dass du dich solange darum kümmerst!!
finde ich echt toll!
Ich bin zwar schon seit heute morgen an diesem Problem aber kann es einfach nicht lösen! habe einfach zuwenig erfahrung mit vba!
mittlerweilen sieht mein code wiefolgt aus: (funktiert leider noch nicht)
Sub Vergleichen()
Dim Referenz, WPE, nichtWPE As Integer
Dim found As Boolean
Referenz = 1
nichtWPE = 1
Dim a, b As String
Do While Worksheets("Referenz-PISA").Cells(Referenz, 1) <> ""
found = False
WPE = 1
Do While Worksheets("WPE").Cells(WPE, 1) <> ""
a = Worksheets("Referenz-PISA").Cells(Referenz, 1)
b = Worksheets("WPE").Cells(WPE, 1)
If Worksheets("Referenz-PISA").Cells(Referenz, 1) = Worksheets("WPE").Cells(WPE, 1) Then
found = True
Exit Do
End If
WPE = WPE + 1
Loop
Referenz = Referenz + 1
Loop
Worksheets("nichtWPE").Select
MsgBox "Vergleich Abgeschlossen"
End Sub
salute,
bin einbisschen weitergekommen!
habe bemerkt, dass ich nur jeweils die selben spalten miteinander vergleiche!
richtig wäre aber, wenn es durch eine schleife gehen würde, welche A1 mit allen zeilen vergleicht und nicht nur mit dem A1 in WPE.
hast du einen vorschlag?
greats...