Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
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
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sverweis mit VBA und mehrere Werte

Sverweis mit VBA und mehrere Werte
28.04.2008 04:24:07
Willi
Moin Moin miteinander.
Ich habe folgendes Problem und finde keine ordentliche Lösung.
Ich besitze eine Exceltabelle mit 2 Spalten. Sie ist folgerendermassen aufgebaut.
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
Nun will ich in VBA6 realisieren das bei jeden A-Wert = 3,14 der dazugehörige B-Wert ausgegeben wird.
Zu diesem Thema hab ich bereits einen hilfenreichen Artikel in diesem Forum gefunden.
https://www.herber.de/forum/archiv/548to552/t551765.htm
Daraus konnte ich folgenden Code benutzen.

Sub FindValues(sSuchkriterium$, sSuchBereich$)
Dim oZelle As Object
Dim rBereich As Range
Set rBereich = Range(sSuchBereich)
ActiveSheet.Cells(3, 5).FormulaR1C1 = ""
For Each oZelle In rBereich
If oZelle.FormulaR1C1 = 3,14 Then
If ActiveSheet.Cells(3, 5).FormulaR1C1  "" Then _
ActiveSheet.Cells(3, 5).FormulaR1C1 = _
ActiveSheet.Cells(3, 5).FormulaR1C1 & ", "
ActiveSheet.Cells(3, 5).FormulaR1C1 = _
ActiveSheet.Cells(3, 5).FormulaR1C1 & _
oZelle.Offset(rowOffset:=0, columnOffset:=1).FormulaR1C1
End If
Next
End Sub


Leider schreibt dieser VBA - Code alle gefunden Zahlen in ein un die gleiche Zelle(3,5 wie oben deklaiert)
Ich will nun aber das jeder neu gefundene Wert in eine extra Zelle geschrieben 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 ausgelesen werden muss.
Mit dem Autofilter kann ich es nicht realsieren da es zuviele Werte sind die ich abschreiben müßte.
Leider bin ich absoluter VBA - Beginner und weiß nicht wie ich den Code entsprechend umschreiben kann damit er die oben beschriebenen Aufgaben erfüllt.
Könnt ihr mir irgendwie helfen und denn Code so ändern, dass automatisch alle Werte einzeln untereinander eingetragen werden?
Willi

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sverweis mit VBA und mehrere Werte
28.04.2008 07:08:00
Harald
Hallo Willi,
sehr verwirrend.
"bei dem ersten A-Wert=3,14 soll in Zelle D1:E1 der dazugehörige B-Wert stehen " D1:E1 ist ein Bereich mit zwei Zellen. Wo soll denn nun das Ergebnis stehen.
Warum das mit dem Autofilter nicht funktionieren soll, ist mir unklar. Also Autofilter auf Spalte A, 3,14 als Filterkriterium einstellen und, voilá, nur noch die Zeilen mit A=3,14 werden angezeigt. Nun kannst Du die Spalte B markieren und alle Werte auf einmal kopieren - wohin immer Du sie haben möchtest.
Alternativ bietet sich eine Hilfsspalte an. Wenn Du z.B. in D1 die Formel schreibst:
=Wenn(A1=3,14;B1;"")
und diese Formel dann mittels Ausfüllkästchen in Spalte D nach unten kopierst (Excel ersetzt dann A1 durch A2, A1 durch A3 etc.), dann stehen in Spalte D nur Werte, wenn A=3,14.
Gruß Harald

Anzeige
AW: Sverweis mit VBA und mehrere Werte
28.04.2008 07:48:00
Erich
Hallo Willi,
so gehts mit VBA - und dem AutoFilter
(Überschrift und Ausgabe in den Spalten D:E mal vorausgesetzt):

Option Explicit
Sub Gefilterte_kopieren()                                            ' eg 08.01.2007
Dim lngZ As Long
Const strK = 3.14    ' Filterkriterium
Const sKri = 1       ' Spalte, in der das Filterkriterium steht
Const sKop = 2       ' Spalten von 1 bis sKop werden kopiert
Const sAus = 4       ' 1. Spalte, in die kopiert werden soll
Range(Columns(sAus), Columns(sAus + sKop - 1)).Clear
lngZ = Cells(Rows.Count, sKri).End(xlUp).Row
If WorksheetFunction.CountIf(Range(Cells(1, sKri), _
Cells(lngZ, sKri)), strK) = 0 Then Exit Sub
Columns(sKri).AutoFilter
Columns(sKri).AutoFilter Field:=1, Criteria1:=strK
Range(Cells(1, 1), Cells(lngZ, sKop)).Copy Cells(1, sAus)
Columns(sKri).AutoFilter
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Sverweis mit VBA und mehrere Werte
29.04.2008 05:19:00
Willi
Hallo Erich.
Dein Programm läuft super.
Hab recht vielen Dank dafür.
Mußte nur meinen Offset der eingelesenen Daten ändern und schon hat alles gepaßt.
Danke Danke.
Willi

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige