Frage von Nightythehawk, 96

Excel If Abfrage nach bestimmtem Wort?

Hallo Community,

ich benötige bei einer Excel-Abfrage eure Hilfe.

Folgendes Problem: Ich habe eine Excel-Datei (2013) mit verschiedenen Webabfragen.

Auf Tabellenblatt 2 besorge ich mir alle nötigen Infos über verschiedene Webabfragen. Auf Tabellenblatt 1 werden die ausgelesenen Daten von Tabellenblatt 2 gefiltert und mit Verweisen in die entsprechenden Felder kopiert.

Die gefilterten Daten ändern sich täglich, das heißt in der einen Zelle steht heute "1000 Frankfurt" und morgen steht da "500 Berlin", jetzt soll wenn in der bestimmten Zelle "Frankfurt steht automatisch der Wert in eine andere Zelle kopiert werden.

Beispielwerte:

Tabellenblatt 2 wird das Feld B8 abgefragt und in Tabellenblatt 1 nach C4 verwiesen, wenn im C4 Feld jetzt der Name "Frankfurt auftaucht, soll die komplette Zelle nach Tabellenblatt 1 D4 kopiert werden.

Ist eine derartige Abfrage sehr komplex?

Um die aktuellen Daten abzurufen, drücke ich im Reiter "Daten" auf "alles aktualisieren", evtl. kann man das Kopieren der Zellen damit verknüpfen?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Iamiam, Community-Experte für Excel, 49

in zB F1 den Findebegriff Frankfurt. Wenn der gesuchte Begriff nbur einmal auftreten kann, reicht In D1 die Formel:

=index(C:C;Vergleich("*"&F1&"*";C:C;0))

Das liefert den gesamten Eintrag von der Zelle in C:C, in der Frankfurt -oder was sonst in F1 steht- und Du kannst das runterkopieren für eine beliebige Vielzahl von Suchaufträgen. Wenn Du das festhalten willst, musst Du es (oder die ganze Abfrageliste D:D allerdings kopieren und als WERT in zB G1 einfügen

Nicht gefundene Begriffe liefern #NV!, was durch Einbettung obiger Formel in =Wennfehler(Formel;"☹") zu einem beliebigen Zeichen umgewandelt werden kann.

Kommt der Begriff allerdings mehrfach vor, wird nur das erste Auftreten zurückgegeben, eine dafür adäquate Lösung ginge, aber erheblich komplizierter.

in diesem Fall kannst Du eine Zusatzfrage in dieser AW stellen.

Kommentar von Nightythehawk ,

Der Wert kann in der Spalte C mehrfach vorkommen, daher ist es auf die Zelle C4 beschränkt.

wenn C4 das Wort "Frankfurt" enthält soll der komplette Inhalt von C4 in D5 kopiert werden.

In C5 würde dann die gleiche Abfrage stattfinden, aber aus einer anderen Webabfrage.

(Im bestenfall würde dann nur ein bestimmter Zahlenwert in D5 kopiert werden aber das ist erstmal nicht wichtig.

Kommentar von Iamiam ,

Wenn es Dir reicht, das in D4 zu haben, dann

=Wenn(C4="*"&F$1&"*";C4;"☹") und diese Formel über die gesamte relevante Länge der Spalte D:D kopieren, aber dann müsstest Du ja immer alles nach einem Ergebnis durchsuchen.

Wenn Du oben übrigens wissen willst, in welcher Zeile der gefundene Begriff steht, dann nur den Vergleich-Teil der Formel.

Kommentar von Iamiam ,

hat sich mit Deinem Kommentar überschnitten.

Aber den verstehe ich nicht: Also wenn Frankfurt nicht in C4, sondern erst in C8 vorkommt, soll das ignoriert werden und in C4 ein Negativ-Ergebnis stehen, so dass in C5 weitergesucht werden kann? Oder liegts am Verständnis der Wortes Filtern? Wird da nur eine Zelle gefiltert? nach dem Begriff Frankfurt? aber dann weißt Du doch schon, dass Frankfurt drinsteht?

Was willst Du denn erreichen?

Kommentar von Nightythehawk ,

In dem Beitrag von Darkabyss habe ich ein Beispielbild eingefügt damit der Aufbau klarer wird.

Kommentar von Nightythehawk ,

Wie kommst du auf C8? Also die Daten kommen aus dem zweiten Tabellenblatt und werden mit dem Befehl ='Tabellenblatt2'!B8 nach Tablettenblatt 1 in die Spalte C4 weitergegeben. Diese Werte ändern sich täglich und die Weitergabe in die Zelle D5 oder D6 (je nach Stadtname) soll auf Tabellenblatt 1 gespeichert werden.

Wenn heute in C4 1000 Frankfurt von der Webabfrage auf Tabellenblatt2 übergeben wird dann soll in D5 der Wert 1000 eingetragen werden, wenn dann morgen 500 Berlin in C4 steht soll der Wert 500 in der Spalte E5 gespeichert werden. Wenn übermorgen in C4 900 Frankfurt steht soll der Wert in C5 auf 900 abgeändert werden.

Kommentar von Iamiam ,

Ohne das Bild wäre ich NIE auf diese Blatt-Anlage gekommen!

ich hab Dir jetzt ein Ereignis-Makro geschrieben. Um das zum Berechnen zu bewegen, musst Du allerdings in Sp.C in die betreffende Zelle klicken und dann mit Enter wieder schließen (oder F2 und Enter)

Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C4:C999")) Is Nothing Then
Dim i, Orte
Orte = 2 ' erst definieren!
For i = 1 To Orte
If InStr(1, Target.Value, Range("C3").Offset(0, i).Value) > 0 Then
Target.Offset(0, i).Value = Left(Target.Value, Len(Target.Value) - Len(Range("C3").Offset(0, i).Value) - 13): Exit Sub 'wahlweise: -4 oder -13(nur Zahl)
End If
Next i
End If
End Sub

Kopiere den Code hier , klicke auf den Blattnamen, Kontextmenü

Code anzeigen

, und füge das dort ein.

Dann füge die Zahl der Orte ein

, die zur Auswahl stehen (Annahme: es gibt keine Leerspalten zwischen den Orten und auch nicht zwischen Sp.C und D, sonst werden Orte rechts nicht alle erfasst. Für jede Leer- bzw Bemerkungsspalte müsstest du die Zahl um 1 erhöhen (dauert minimal länger, geht aber)

Denk jedoch dran, dass es Fft/Main und Fft/Oder gibt oder dass München auch in Schwabmünchen zu finden ist und je nach Schreibweise Essen in Giessen!

Im Moment sind die Zahlen (-13) so eingestellt, dass KEIN Text rüberkommt, musst du allerdings Aufträge und zB Anmeldungen unterscheiden (oder Zusatztext "storniert"), brauchst Du die Variante mit -4

Und immer Plural

Aufträge

, nie zu

Auftrag

wechseln, sonst stimmen die Zeichenzahlen nicht mehr!

Das Makro spricht nur in dem zum Modul gehörenden Blatt an.

Viel Erfolg, frag ggf zurück hier!

Kommentar von Nightythehawk ,

Danke, hat funktioniert.

Kommentar von Iamiam ,

auch danke, für den Stern!

Antwort
von Jackie251, 41

eine Derartige Abfrage ist nur komplex sondern unmöglich (VBA Lösungen vorbehalten) da es der Excelstrutur widerspricht.

In excel können Zellen nur
- Eingabezellen sein die eine Nutzereingabe akzeptieren und die Eingabe ausgibt (bzw, das ausgibt was Excel glaubt das gemeint sein könnte)

oder

- eine Formel enthalten, welche ggf. ihrerseits Daten aus anderen Zellen abfragt und das Ergebnis ihrer Formel ausgibt.

Es ist nicht vorgesehen, das eine Zelle ihrerseits einer anderen eine Anweisung gibt.

Antwort
von Darkabyss, 50

Kannst du es vielleicht geordneter schreiben? Ich verstehe um ehrlich zu sein dein Problem nicht, und vorallem nicht wie die Tabelle aufgebaut ist. Natürlich kannst du diese Abfrage am besten mit einer "wenn-Formel" lösen.

Kommentar von Nightythehawk ,

Was ist für dich geordnet? Ich habe alles ausführlich beschrieben.

Kommentar von Darkabyss ,

http://fs5.directupload.net/images/160411/zif4kxwf.jpg

Ich denke es wäre gut, wenn du das Beispiel bebildern würdest, eine Beispieltabelle machst oder sogar das Original postest.

Kommentar von Nightythehawk ,

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten