Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1588to1592
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
Inhaltsverzeichnis

Teil von Text ausgeben und diesen suchen

Teil von Text ausgeben und diesen suchen
08.11.2017 21:52:02
Text
Hallo,
würde mich freuen wenn ihr mir mit 2 Formeln aushelft.
In Spalte I (I1 bis 422) stehen Texte die alle die Zeichenfolge \title\ beinhalten
Gibt es eine Formel die die 9 darauf Folgenden Zeichen ausgibt?
Nun zur 2. Frage,
such da ähnlich etwas wie der SVERWEIS Formel, nur dass nach links geschaut werden soll, also in dem Fall suche J1 in Movies!E:E und gebe aus was in Spalte A steht.
Das zweite mit der Formel, der Text aus J1 kommt mehrfach in Spalte E vor, jedoch steht jedesmal ein anderer Text in Spalte A. Gibt es eine Möglichkeit, dass wenn ich die Formel nach rechts kopiere, alle diese Texte aus Spalte A ausgegeben werden?
Danke und Gruß
Christian

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA 1. Frage
08.11.2017 22:24:37
Fennek
Hallo,

Sub Main
for i = 1 to 6
Tx = split(cells(i,"I"), "/")
for k = 0 to ubound(Tx)
if Tx(k) = "title" then cells(i,1) = Tx(k+1)
next k
next i
End Sub
passt nur für die Bsp-Datei.
mfg
AW: VBA 1. Frage
08.11.2017 22:34:08
Christian
Hallo Fennek,
ich hoffe ich hab alle Möglichkeiten mit der Bsp. Datei abgedeckt.
Wie gesagt, es ging mir darum die 9 Zeichen nach /title/ auszugeben, egal was davor oder danach steht.
Sorry aber bei mir bleibt Spalte J leer, wenn ich das Makro ausführe
Gruß
Chrisian
Anzeige
AW: VBA Test
08.11.2017 22:40:59
Fennek
das Ergebnis wird in Spalte A geschrieben, zum Testen ist dies notwendig, aber nach der Prüfung musst du das ändern.
AW: VBA Test
08.11.2017 22:49:16
Christian
Oh gott ich hätte echt zurückscrollen müssen zu Spalte A. Tausendmal sorry.
Aber wie bekomme ich das nun in Spalte J ich will ja eigentlich nicht dass Spalte A der Originaldatei überschrieben wird. Bei der Testdatei war das ja noch egal.
Gruß
Christian
PS Bei 422 zeilen muss ich denke ich nur die 6 am Anfang des Makros in 422 ändern oder?
AW: ja
08.11.2017 22:51:39
Fennek
oder

lr = cells(rows.count, "Spalten Buchstabe").end(xlup).row
AW: ja
08.11.2017 23:13:52
Christian
sorry schick bitte nochmal das komplette Makro, irgendwoe verstehe ich nicht, wo diese Zeile hinsoll.
Und auch nicht ob sie jetzt das Problem in welche Spalte das Ergebnis geschrieben werden soll oder die Frage wieviele Zeilen es sind, löst.
Gruß
Christian
Anzeige
AW: hm...
08.11.2017 23:35:56
Fennek
das solltesr du können

Sub Main
for i = 1 to cells(rows.count, "I").end(xlup).row
Tx = split(cells(i,"I"), "/")
for k = 0 to ubound(Tx)
if Tx(k) = "title" then cells(i,"J") = Tx(k+1)
next k
next i
End Sub

AW: function
08.11.2017 23:40:22
Fennek
natürlich alles ungeprüft

function iTitle(rng as range) as string
Tx = split(rng.value, "/")
for k = 0 to ubound(Tx)
if Tx(k) = "title" then iTitle = Tx(k+1) : exit function
next k
End function

AW: hm...
08.11.2017 23:42:42
Christian
Hallo Fennek,
deshalb hatte ich ja ursprünglich auch nach einer Formellösung gefragt, damit kenne ich mich zumindest etwas besser aus. VBA ist für mich leider noch ein böhmisches Dorf. Wenn da cells(i,"A") gestanden hätte wäre es klar gewesen. Aber nichts desto trotz du hast recht ich sollte mich damit mal mehr befassen. Dann wäre mir sicher auch aufgefallen dass das Makro die Ergebnisse in Spalte A schreibt.
Aber hast du denn zufällig auch eine Lösung für das zweite Problem?
Gruß
Christian
Anzeige
Beispiel Datei zur zweiten Frage
08.11.2017 22:13:46
Christian
https://www.herber.de/bbs/user/117538.xlsx
Mit der 2. Formel soll die Spalte K ff. ausgegeben werden.
Also das was in J steht in Movies!E:E suchen und von jedem Mal wo der Text gefunden wird ausgeben, was in Spalte A steht.
Die Reihenfolge in der die Texte ausgegeben werden, ist mir egal.
AW: Teil von Text ausgeben und diesen suchen
09.11.2017 00:08:43
Text
Hi
1. Frage geht ganz einfach per Formel, Formel für J2:
=TEIL(I1;FINDEN("/title/";I2)+7;9)
2. Frage ist schon sehr aufwendig.
da sollte man für eine optimale Lösung ungefähr wissen, wie groß die zu erwartende Datenmenge ist und ob das ganze statisch oder dynamisch sein soll
statisch heißt, dass das Endergebnis Fixwerte sind und sich nachträgliche Änderungen in den Ausgangsdaten nicht mehr auf das Ergebnis auswirken.
dynamisch heißt, dass nachträgliche Änderungen in den Ausgangsdaten auch im Ergebnis wirksam werden.
das erzeugt aber einen großen Rechenaufwand und ist bei großen Datenmengen nicht sinnvoll.
aber trotzdem hier mal ein Ansatz für eine dynamische Lösung ohne Umsortieren der Daten:
- diese Formel ins Blatt MOVIES Zelle F1:
=E1&"-"&ZählenWenn(E$1:E1;E1)
die Formel bis zum Tabellenende runter ziehen.
- diese Formel in Blatt TABELLE1 Zelle K2:
=WENNFEHLER(INDEX(Movies!$A:$A;VERGLEICH($J2&"-"&SPALTE(A1);Movies!$F:$F;0));"")
die Formel nach unten bis zum Datenende ziehen und soweit nach rechts, bis die entsprechende Spalte nur noch den Leerstring als Ergebnis enthält.
Gruß Daniel
Anzeige
AW: Teil von Text ausgeben und diesen suchen
09.11.2017 00:26:40
Text
Hallo Matthias,
vielen Dank für die viele Mühe so spät am Abend.
In der ersten Formel ist leider ein Fehler, den ich habe selbst korrigieren können.
Mit
=TEIL(I1;FINDEN("/title/";I1)+7;9) klappt es statt =TEIL(I1;FINDEN("/title/";I2)+7;9)
da ich die Leerzeile in zeile 1 inzwischen gelöscht habe.
Zu dem zweiten Teil, da geht es schon um etwas größere Datenmengen,
genau genommen haben Spalten A und E jeweils 15868 Einträge, 423 zu suchende Texte in Spalte I und jeder kommt bis zu 37mal in Spalte E vor, auch wenn in den meisten Fällen der Text zweimal vorkommt.
Aber es ist eine einmalige Sache, die Rechenzeit ist also relativ egal. Es macht nichts aus, danach die Werte einzufügen dass nicht permanent alles berechnet wird.
In der Beispieldatei funktioniert auch die zweite Formel.
Ich muss mir jetzt nur überlegen, wo ich die Hilfsspalte hinpacke, in der Tabelle Movies ist OY die erste freie Spalte, das wäre ziemlich viel Scrollen immer in Spalte OY, wenn man da was schaun will.
Gruß
Christian
Anzeige
natürlich Daniel
09.11.2017 00:29:07
Christian
sorry
AW: natürlich Daniel
09.11.2017 01:03:07
Daniel
Hi
bei der Datenmenge kannst du meine beschriebene Methode knicken.
wenns statisch ist, machs so:
1. Füge in der Liste Movies eine Überschriftenzeile ein
2. Liste MOVIES nach Spalte E aufsteigend sortieren
3. in einer Hilfsspalte im Blatt MOVIES (bspw Spalte F) diese Formel einfügen, Formel für F2
=A2&WENN(E2=E1;";"&F1;"")
Formel wieder bis zum Tabellenende runterziehen
4. im Blatt TAbelle1 dann diese Formel in K2:
=WENN(SVERWEIS(J2;Movies!E:E;1;WAHR)=J2;INDEX(Movies!F:F;VERGLEICH(J2;Movies!E:E;1));"")
und nach unten ziehen
5. die Spalte K kopieren und an gleicher Stelle als Wert einfügen
6. mit der Spalte K die Funktion DATEN - DATENTOOLS - TEXT IN SPALTEN ausführen mit dem Semikolon als Trennzeichen.
Gruß Daniel
Anzeige
AW: natürlich Daniel
09.11.2017 01:16:34
Christian
Hallo Daniel,
ungetestet: der Vorschlag funktioniert nicht,
das konntest du nicht wissen, sorry aber ich habe nicht damit gerechnet dass das eine Rolle spielt.
Es existiert ein Makro, dass die Formeln in Zeile 1 bei Bedarf in weitere Zeilen kopiert und in den anderen Zeilen Werte einfügt. Mit anderen Worten, wenn ich Zeile 1 ändere werden meine Formeln überschrieben. Daran ändert auch eine Sortierung nach Spalte E nichts, die erste Zeile mit den Formeln würde auch da da die erste Zeile bleiben.
Das Ganze ist gemacht, damit nicht jedesmal 140.000 Formeln berechnet werden, sondern nur da wo sich auch was geändert hat.
Sorry du sagst jetzt bestimmt, warum war das nicht in der Beispiel Datei, ich kann bei 300 KB nunmal keine Tabelle in den Ausmaßen die sie hat posten, also habe ich alles weggelassen was mir unwichtig erschien. War wohl in diesem Fall eins zuviel.
PS: Notfalls mache ich mich halt dran, das jetzt auch nicht grad kleine Makro komplett mit ' auszuschalten, wenn es nicht anders geht.
Gruß
Christian
Anzeige
geht natürlich doch...
09.11.2017 01:18:23
Christian
ich kann die Daten ja in eine andere Tabelle ohne Makro und Formeln kopieren.
Werde das morgen dann machen.
Gruß
Christian
AW: natürlich Daniel
09.11.2017 09:14:08
Christian
Hallo Daniel,
hat alles funktioniert. Vielen Dank
Christian

305 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige