Mit VBA suchen verschieben

Hallo zusammen. Würde gerne aus tab.1 a1:a99 alle werte auslesen wenn die jeweilige bsp. linke zelle den inhalt „ja“ hat. die ausgelesenen werte sollen in der tab.2 nach einander wiedergegeben werden.

Bsp Tab.1
A … D
projekt1 ja
projekt2 nein
projekt3 nein
projekt4 ja

Tab.2 sollte dann das ergebnis anzeigen

G
Projekt1
projekt4

denke das problem ist nur mit einem vba zu lösen. besitze leider nicht das knowhow dafür. wäre super wenn einer von euch mir da helfen könnte.
danke

Hallo Eddy81.
Es könnte auch mit Filter und kopieren der so zusammengesetzten Zellen funktionieren.
Aber das Gute an Excel ist die Aufzeichnungsfunktion für VBA-Code.
Sprich: in der Excel-Version 2007 ist das unter View–>Macro–> Record Macro zu finden.
(In den älteren Versionen war das m.E. noch einfacher, aber im Augenblick habe ich keinen Zugriff auf eine ältere Version).
Der so „mitgeschriebene“ Code für einen bestimmten Fall, kann entsprechend angepasst werden, falls erforderlich.

Nichts für ungut - dass ich keine fertige Lösung präsentiere - aber dagegen sprechen zwei Punkte:

  1. ich kenne die Version nicht, in der Du Dich bewegst, und die 2007er Version ist auch in der VBA-Syntax angepasst worden,
    und
  2. ich habe, wenn ich Fragen hatte, immer die „Hilfe-zur-Selbsthilfe“ sehr geschätzt. Dabei hatte ich die Möglichkeit, mir Lösungen anzueignen statt sie zu übernehmen…

Viel Erfolg.
Freundlich grüßt
Ernie

Listenauswahl ohne VBA
Hi Eddy,
dafür brauchts kein VBA.

Probier mal diese Formeln in Tabelle2 (ab Zeile 1):

=INDEX(Tabelle1!A$1:A$999;KKLEINSTE(WENN(Tabelle1!D$1:smiley:$999=„ja“;ZEILE(Tabelle1!A$1:A$999));ZEILE()))

oder

=WENN(ZEILE()>ZÄHLENWENN(Tabelle1!D$1:smiley:$999;„ja“);""; INDEX(Tabelle1!A$1:A$999;KKLEINSTE(WENN(Tabelle1!D$1:smiley:$999=„ja“;ZEILE(Tabelle1!A$1:A$999));ZEILE())))

Beide Formeln musst du als Matrixformeln eingeben, also mit Strg+Shift+Enter statt Enter,
dann nach unten kopieren, soweit nötig.

Die zweite Formel ist länger, unterdrückt aber dafür die Fehlerausgabe,
wenn die Anzahl "ja"s überschritten wird.

Hoffe, dass dir das hilft!
Rückmeldung wäre nett - Grüße von Erich aus Kamp-Lintfort

Hi Erich.
Super der Ansatz/ Lösung.Hatte es mit dem Makro versucht (siehe unten), aber warum kompliziert wenn man es auch einfacher haben kann.
Ist denn auch so einfach einen bestimmmten Ausgabebereich in der Tab.2 zu definieren. ( das Problem hat mich übrigens auch bei dem Makro den letzten Nerv gekostet).Ziel sollte es sein den Wiedergabebereich auf Bsp A5:A100 definieren. Nach dem Bereich soll eine anderer deffinierter Bereich Bsp. A102:A200 folgen. Falss ihr euch fragt was das soll, es sind personenspez. Bereiche d.h. in dem jeweiligem Bereich will ich alle Projekte an den die Person A teilnimmt auflisten. Hoffe du kannst mir da weiter helfen. Gruß

Sub Makro1()
Dim Zeile As Integer
Dim Bereich As Range
Zeile = 1

Sheets(2).Range(„A1:A100“).Clear
Do While Not Range(„B“ & Zeile).Value = „“
If Range(„B“ & Zeile).Value = „Ja“ Then
i = Sheets(2).Cells(65536, 1).End(xlUp).Row + 1
Sheets(2).Cells(i, 1) = Range(„A“ & Zeile).Value
i = i + 1
End If
Zeile = Zeile + 1 'Nächste Zeile aufrufen
Loop
End Sub

Hallo Ernie

Danke auch an dich. Die einfache 1 zu 1 Übernahme von Lösungen wäre in meinem Fall nicht möglich. Dazu hätte ich mehrere Beiträge schreiben müßen. Auch ich werde noch richtig Hand anlegen müßen ( macht auch Spaß wenn das Ergebnis stimmt). Für mich ist das Forum der letzte Strohhalm vor Aufgabe oder zumindestens starker Frustration.

Ich danke dir für den tollen Hinweis zu der Aufzeihungsfunktion. Das kann mir bestimmt im weiterem Verlauf als zusätzliche Quelle vom Nutzen sein.

Gruß

Sorry, bin weg
Hi Eddy,
jetzt muss ich gleich aus mehreren Gründen passen:

  • Ich habe keine Zeit.
  • Ich verstehe nicht so recht deinen Wunsch.
  • Ich bin über eine Woche lang weg.

Ich hoffe, du bekommst hier Hilfe!
Grüße von Erich aus Kamp-Lintfort

ZufÄllig mache ich gerade sowas ähnliches. Werde dir heute bzw morgen mal eine Lösung schicken. Bis dahin bitte ich um Geduld

Lg OVM

ZufÄllig mache ich gerade sowas ähnliches. Werde dir heute bzw
morgen mal eine Lösung schicken. Bis dahin bitte ich um Geduld

Lg OVM

Danke im Voraus

Lösung des Problems
Einfach im Excel [alt]+[f11] und dann im projektfenster rechte maustaste–> neues Modul

da haust du das hier rein:

Option Explicit

Sub Sortieren()
Dim i As Integer
Dim r As Integer
r = 1

’ Hier n.B. statt 99 die endzeile der tabelle 1 eingeben
For i = 1 To 99

’ mit sheets(x) gibst du quell und zieltabelle an. denke mal bei dir von 1 zu 2

If Sheets(1).Cells(i, 4).Value = „ja“ Then
Sheets(2).Cells(r, 7).Value = Sheets(1).Cells(i, 1).Value
r = r + 1
End If

Next i

End Sub

mit [f5] startest du das programm

hoffe dir konnte geholfen werden.

LG OVM

SUPER! Konnte das Makro direkt anpassen und funktioniert wie geschmiert. Besten Dank.

in Tab.2:
=wenn(tab1!D1=„ja“;tab1!A1;"")

und dies nach unten kopieren…

mfg
Pete

Keine Ursache :wink:

lg ovm