447 Aufrufe
Gefragt in Tabellenkalkulation von finger59 Experte (1.3k Punkte)
Hallo Excel-Fangemeinde,
im Internet habe ich dieses Makro gefunden, was mir aber nur eine Zelle kopiert und auch nur einen Wert in Spalte A abfragt (Problem unterhalb des Makros):

Sub Suche()
x = Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To x
Dim a As Variant
a = 0
If Cells(i, 1) = "a" Then
a = Cells(i, 10)
Worksheets("Tabelle3").Cells(i, 1) = a
End If
Next

Ich möchte die Spalte A nach den Buchstaben a bzw. b durchsucht haben. Wird der Buchstabe a gefunden, dann sollen die Zellinhalte (fester Standort) B4 und E2, sowie flexibler Standort in der Zeile wie der gefundene Buchstabe a die Werte aus Spalte B und Spalte J ausgelesen werden.
Wird der Buchstabe b in Spalte A gefunden, dann benötige ich die Zellinhalte aus Zelle B4 und E2, sowie aus der Zeile mit dem gefundenen b die Zellinhalte aus Spalte B und Spalte K.

Die Zellinhalte sollen im gleichen Tabellenblatt in die Spalten M - P hineinkopiert werden. Im Beispielmakro ist ein anderes Tabellenblatt angesprochen worden, was ich aber so nicht benötige.

Mit dem obigen Makro kann ich leider nur entweder a oder b auslesen und nur einen dazu passenden Wert, was auch funktioniert hatte.

Vielleicht kennt jemand ein anderes bereits hier oder woanders ähnliches Makro oder kann mir eine sonstige Internetadresse geben...

Ich bedanke mich schon mal bei allen Interessierten an meiner Anfrage und wünsche noch einen schönen Abend.... LG... Helmut

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Helmut,

ich hoffe ich habe dich richtig verstanden:

Sub suchen()
Dim lngLetzte As Long
Dim lngZeile As Long
Dim lngZaehler As Long

lngLetzte = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For lngZeile = 1 To lngLetzte
If ActiveSheet.Cells(lngZeile, 1) = "a" Then 'falls Inhalt in Spalte A ist gleich a
lngZaehler = lngZaehler + 1 'Zähler für Einfügezeile erhöhen
Cells(lngZaehler, 13) = Range("B4").Value 'B4 in Spalte M
Cells(lngZaehler, 14) = Range("E2").Value 'E2 in Spalte N
Cells(lngZaehler, 15) = Cells(lngZeile, 2).Value 'Inhalt aus Spalte B der gefundenen Zeile in Spalte O
Cells(lngZaehler, 16) = Cells(lngZeile, 10).Value 'Inhalt aus Spalte J der gefundenen Zeile in Spalte P
End If
If ActiveSheet.Cells(lngZeile, 1) = "b" Then 'falls Inhalt in Spalte A ist gleich b
lngZaehler = lngZaehler + 1 'Zähler für Einfügezeile erhöhen
Cells(lngZaehler, 13) = Range("B4").Value 'B4 in Spalte M
Cells(lngZaehler, 14) = Range("E2").Value 'E2 in Spalte N
Cells(lngZaehler, 15) = Cells(lngZeile, 2).Value 'Inhalt aus Spalte B der gefundenen Zeile in Spalte O
Cells(lngZaehler, 16) = Cells(lngZeile, 11).Value 'Inhalt aus Spalte K der gefundenen Zeile in Spalte P
End If
Next lngZeile

End Sub


Die gefundenen Werte werden ab der ersten Zeile in den Spalten M bis P eingetragen.

Gruß

M.O.
0 Punkte
Beantwortet von finger59 Experte (1.3k Punkte)
Hallo M.O.,

vielen Dank für Deine Unterstützung und wie Du vielleicht schon gesehen hast, habe ich Deine Antwort als meine Lösung gesetzt.

Anfangs hatte ich zwar einen Fehler mit Abbruch in der ersten If-Schleife mit der "a" - Abfrage, aber das lag an dem Inhalt der Spalte A da ich dort lauter Fehlermeldungen in meiner Testversion hatte.

Bei Euch sieht das immer so einfach aus und meinereiner kommt nicht auf diese Idee es so zu machen.

Dachte eher an if und else oder sowas ...

Von daher vielen Dank für Deine Beantwortung und Lösung und Dir und allen anderen noch einen schönen Tag...
meinen hast Du jedenfalls gerettet :-).... Gruß Helmut
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Helmut,

vielen Dank für die Rückmeldung. Aber tröste dich: Es geht wohl jedem so, der längere Zeit an einem Problem arbeitet, dass man entweder den Wald vor lauter Bäumen nicht sieht oder viel zu kompliziert denkt und nicht auf die einfachste Lösung kommt. Auch ich habe da schon meine Erfahrungen gemacht ;-).

Gruß

M.O.
...