Sverweis mit VBA bei gleichen Suchkriterium
N'abend Supporter.
Ich hätte da mal eine ganz wichtige Frage (sagt wohl aber jeder) .
Ich habe eine Tabelle wie unten eingefügt.
3,14 0,08086337
2,5 0,761919374
3,5 0,110766977
1,9 0,855926284
2,234 0,883506027
3,14 0,068641345
12,9 0,871115958
22,1 0,131935677
1,45 0,638340942
3,14 0,413197416
22,4 0,913533769
3,14 0,855717954
Dabei handelt es sich um A - Spalte und eine B-Spalte. Nun soll ich in VBA6 realisieren das bei jeden A-Wert = 3,14 der dazugehörige B-Wert ausgegeben wird.
D.h. bei dem ersten A-Wert=3,14 soll in Zelle D1:E1 der dazugehörige B-Wert stehen bei dem zweiten A-Wert=3,14 der dazugehörige B-Wert in Zelle D1:E2 usw. Es gibt cirka 200-300 A-Werte die den Wert 3,14 besitzen und deren B-Wert ausgelsen werden muss.
Leider habe ich noch nie in VBA6 programmiert und habe keine Ahnung wie ich das anstellen könnte.
Könnten Ihr mir irgendwie helfen? Das wäre absolute Oberspitzenklasse.
Und hoffe ihr konntet mit meiner Erklärung was anfangen und findet eine Lösung. Ihr seit meine letzte Rettung.
Danke.
David
Antwort schreiben
Antwort 1 von Saarbauer vom 25.04.2020, 08:34 Options
Hallo,
eine Lösung auf die Schnelle.
Autofilter für Spalte A auf 3,14 setzen und dann die Daten nach Rücksetzung des Atofilters in D1: E?? kopieren
Gruß
Helmut
Antwort 2 von DavidUnwissende vom 25.04.2020, 13:51 Options
Hallo Saarbauer.
Danke fuer die schnelle Antwort.
Aber das ist nicht so die optimlae Loesung
Ich hab da einen Code gefunden der meine Anforderungen ziemlich gut erfuellt.
Sub Vlookup()
Dim kcells As Object
Dim uRange As Range
Set uRange = Range("A:B")
ActiveSheet.Cells(3, 1).FormulaR1C1 = ""
For Each oZelle In rBereich
If oZelle.FormulaR1C1 = 3.14 Then
If ActiveSheet.Cells(3, 1).FormulaR1C1 <> "" Then _
ActiveSheet.Cells(3, 1).FormulaR1C1 = _
ActiveSheet.Cells(3, 1).FormulaR1C1 & ", " ActiveSheet.Cells(3, 1).FormulaR1C1 = _
ActiveSheet.Cells(3, 1).FormulaR1C1 & _
oZelle.Offset(rowOffset:=0, columnOffset:=1).FormulaR1C1 '
End If
Next
End Sub
Leider werden da alle gefundenen Ergebnisse in eine Zelle geschrieben. Wie mach ich das nun damit ich jedes Ergebnis untereinander in jeweils einer neuen Zeile steht?
Bin halt ne VBA - Newbie und hab echt keinen Dunst. (Deswegen sicher auch so bescheidene Fragen ...)
Waere echt spitze wenn ihr helfen koenntet.
David
Antwort 3 von Saarbauer vom 25.04.2020, 20:27 Options
Hallo,
Sub Makro1()
letzteZeile = Range("A65536").End(xlUp).Row
Range("A1:B" & letzteZeile).Copy
Range("D1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Suchwert = InputBox("Zahl bitte festelegen", "Zahlenauswahl", "hier Zahl eingeben")
For i = 2 To letzteZeile
If Range("D" & i).Value <> Suchwert Then
Range("D" & i & ":E" & i).Delete Shift:=xlUp
i = i - 1
End If
Next i
End Sub
versuch es mal hiermit.
Dein Fehler liegt hier unter anderem
ActiveSheet.Cells
(3, 1).FormulaR1C1
du bezeihst dich immer auf die gleiche Zelle
Gruß
Helmut
Antwort 4 von DavidUnwissende vom 25.04.2020, 21:49 Options
Nochmal Hallo.
Hab vielen Dank Helmut, fuer dein Makro.
Leider funktioniert es nicht. Jedes mal wenn ich es starte haengt sich Excel auf. Keine Ahnung woran das liegen koennte.
Und wenn ich deinen Code richtig verstanden habe kopierst du zuerst die gesamte Spalte und schneidest dann alle Werte aus die nicht dem Suchwert entsprechen. Kann das, bei mehreren 1000 Werten, Excel stark verlangsamen bei der Ausfuehrung dieses Makros?
David
Antwort 5 von Saarbauer vom 25.04.2020, 21:51 Options
Hallo,
bei der hohen Anzahl von werten kann das schon sein.
Bei mir hat das Makro ohne Probleme funktioniert (Excel 2000)
Gruß
Helmut
Antwort 6 von DavidUnwissende vom 25.04.2020, 22:00 Options
Hm ...
Ich hab VBA 6 - liegt das vielleicht daran?
Oder hab ich irgendwas falsch deklariert?
Antwort 7 von DavidUnwissende vom 25.04.2020, 23:36 Options
Hab das jetzte noch mal mit excel 200 ausprobiert wie du es oben gepost hast.
Aber es funzt trotzdem nicht - es sieht so aus als ob irgendeine schleife nicht beendet wird und das ewig weiter läuft ...
Kann man meinen Code den ich gepostet habe soweit verändern das jeder neue Wert in einer extra zelle geschrieben wird???
gute nacht und schönes wochenende
David