online 1
gast (50)

/ Forum / Anwendungen(Java,C++...)

Anwendungen(Java,C++...)Anwendungen(Java,C++...)

Fragevon DavidUnwissende vom 25.04.2020, 02:41 Options

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

Ähnliche Themen

Mehrere Lösungen ausgeben, vllt. mit SVERWEIS?
Murray  07.08.2007 - 63 Hits -

Makro für Sverweis
mmarion  31.08.2007 - 75 Hits - 5 Antworten

Excel: SVERWEIS; zwei Spalten Auswahl in einer Zelle anzeigen
Manu83  07.02.2008 - 101 Hits - 6 Antworten

sverweis mit vba
Kalmi  15.02.2008 - 197 Hits - 4 Antworten

Sverweis, Suchkriterium steht nach Spaltenindex
AlexSocke  12.05.2008 - 42 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026