Autor
|
Thema: suche Textstring (1289 mal gelesen)
|
Martin_0103 Mitglied
Beiträge: 181 Registriert: 05.02.2003 3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3
|
erstellt am: 24. Nov. 2006 08:35 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, ich habe eine sehr große Tabelle (50.000 Einträge) - es handelt sich um eingelesene Pfadeingaben der Festplatte. In dieser Liste stehen doppelte Dateinamen, allerdings in unterschiedlichen Spalten, z.B. A1 und B3. Gibt es eine Möglichkeite nach Dateiendungen zu suchen und bei gleichen, diese in die Spalte C1 bzw C3 zu schreiben - dann könnte ich die Daten mittels der Spalte L sortieren und "Doppler" lokalisieren. Es kommen unterschiedliche Dateiendungen vor. Hoffe sehr es gibt ´ne Formel sonst gibts keinen Feierabend... Viele Grüße Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 24. Nov. 2006 09:09 <-- editieren / zitieren --> Unities abgeben: Nur für Martin_0103
|
Martin_0103 Mitglied
Beiträge: 181 Registriert: 05.02.2003 3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3
|
erstellt am: 24. Nov. 2006 09:43 <-- editieren / zitieren --> Unities abgeben:
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 24. Nov. 2006 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für Martin_0103
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 26. Nov. 2006 01:18 <-- editieren / zitieren --> Unities abgeben: Nur für Martin_0103
Das Wichtigste vorweg: 50.000 Datensätze: vielleicht sollte man dann doch nochmal diese einzulesende Datei bereinigen, lt. dem screenshot scheint da ne Menge Murks durcheinander zu stehen, vielleicht kann man vor oder beim Einlesen schon was filtern Ich hoffe, Du hast hier nur ein sehr seltsames Beispiel geschossen. Wenn an der Datei nichts zu ändern ist, wird's ein bißchen anstrengend: Man kann mit Code: =WENN(ZÄHLENWENN(A$1:A1;A1)>1;A1;"")
nämlich IMHO nur eine Spalte durchsuchen, das hilft in diesem Fall also wahrscheinlich nicht weiter. Stattdessen kann man aber Code: =WENN(ODER(ZÄHLENWENN(A$1:A1;A1)>1;ZÄHLENWENN(B:B;A1)>0);A1;"")
in z.B. Spalte C verwenden und ist einen kleinen Schritt weiter.Fehlen noch die Einträge, die nur in Spalte B (doppelt) auftauchen. Für die Spalte B muß man zusätzlich die erste Formel : =WENN(ZÄHLENWENN(B$1:B1;B1)>1;B1;"" in z.B. Spalte D nutzen. Diese beiden Ergebnisse dann getrennt weiterbetrachten: heißt, jeweils mit dem Spezialfilter bearbeiten: Dafür müssen die Daten eine Überschrift haben und dann "Daten an andere Stelle kopieren" beim an der gleichen Stelle filtern werden nur Zeilen ausgeblendet + "ohne Duplikate" Nun sind nur noch die Doppeleinträge über. Aber da war noch diese Aussage mit der Dateiendung: Zitat: In dieser Liste stehen doppelte Dateinamen (...) Gibt es eine Möglichkeite nach Dateiendungen zu suchen (...) Es kommen unterschiedliche Dateiendungen vor.
Bislang haben wir den gesamten Zellinhalt betrachtet. Wenn wir aber z.B. alles als Doppelt interpretieren, was denselben DateiNamen hat, muß ich anfangen Hilfszellen einführen:
Code: =TEIL(A1;1;FINDEN(".";A1)-1)
um den DateiNamen auszulesen und auf diese Hilfszellen dann wieder die =WENN(ZÄHLENWENN... von oben und den Spezialfilter loslassen.Sollten wir sogar auf die Idee kommen, gleiche DateiEndungen als Doppelte ansehen zu wollen, muß sogar das ran: Code: =TEIL(A1;VERWEIS(33000;FINDEN(".";A1;ZEILE(A:A)));99)
das ist übrigens die Verkürzung von Code: =TEIL(A1;FINDEN("#";WECHSELN(A1;".";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;".";""))));99)
gefunden bei www.excelformeln.de , die denken sich sowas aus Und jetzt kann mal jemand versuchen, das ohne die Hilfszellen zu machen, also den geTEILten Suchbegriff direkt in die ZählenWenn einbauen. Ich kann's nicht, weil ich in der Suchmatrix ja keine Teilstrings auslesen kann, sondern nur ganze Zellinhalte; ich vergleiche dort also z.B. "abc" mit "abc.xyz" das gibt nie ne Übereinstimmung. Alles in Allem: komplizierte Sache, u.U. über VBA kürzer zu lösen, habe ich aber nicht versucht, wir wollten ja eine Formel ; ) Schönen Sonntag noch!
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tunnelbauer Ehrenmitglied V.I.P. h.c. Bauingenieur
Beiträge: 7085 Registriert: 13.01.2004 ich hab eh keine Probleme damit...
|
erstellt am: 26. Nov. 2006 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für Martin_0103
|
Martin_0103 Mitglied
Beiträge: 181 Registriert: 05.02.2003 3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3
|
erstellt am: 04. Dez. 2006 15:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, erstmal Entschuldigung, dass ich mich jetzt erst wieder melde - aber eine "Angina" brachte mich zum Liegen... Noch eine Erklärung was ich eigentlich möchte... Es handelt sich bei den Daten um Pfade eines Laufwerkes, jede Zelle markiert einen Ordner - da es auch Unterordner gibt stehen die eigentlichen Dateien nicht untereinander. Insofern ist ein Sortieren nicht möglich. Auf Grafik "IST" sind diverse Dateien zu sehen (Endung IPT und 000) Ich suche eine Formel die nun Zeilenweise nach diesen Endungen (Sytax ".123" Punkt mit drei Stellen) sucht und mir den Feldinhalt in die Zelle der Spalte E scheibt - zu sehen auf der "SOLL" Grafik Danke Euch Lieben Gruß
Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 04. Dez. 2006 15:31 <-- editieren / zitieren --> Unities abgeben: Nur für Martin_0103
Code: =WENN(LÄNGE(TEIL(A1;FINDEN("#";WECHSELN(A1;".";"#";LÄNGE(A1)-LÄNGE(WECHSELN(A1;".";""))));99))=4;ZELLE("inhalt";A1);"")
[edit] oder eben so: nur bestimmte Dateiendungen:
Code: Option Explicit Public Sub BestimmteEndungen() Dim cell As Range Dim strRZellwert As String For Each cell In Tabelle1.Range("A:C") strRZellwert = StrReverse(cell.Value) If Left(strRZellwert, 4) = "000." Or Left(strRZellwert, 4) = "TPI." Then Select Case cell.Column Case Is = 1 cell.Offset(0, 4) = cell.Value Case Is = 2 cell.Offset(0, 3) = cell.Value Case Is = 3 cell.Offset(0, 2) = cell.Value End Select End If Next cell End Sub
oder alle mit .***:
Code:
Option Explicit Public Sub AlleEndungen() Dim cell As Range Dim strRZellwert As String For Each cell In Tabelle1.Range("A:C") strRZellwert = StrReverse(cell.Value) If Mid(strRZellwert, 4, 1) = "." Then Select Case cell.Column Case Is = 1 cell.Offset(0, 4) = cell.Value Case Is = 2 cell.Offset(0, 3) = cell.Value Case Is = 3 cell.Offset(0, 2) = cell.Value End Select End If Next cell End Sub
[/edit]------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße...
[Diese Nachricht wurde von runkelruebe am 04. Dez. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin_0103 Mitglied
Beiträge: 181 Registriert: 05.02.2003 3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3
|
erstellt am: 05. Dez. 2006 13:56 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die Antwort, leider bekomme ich es nicht zum laufen! Kann es sein, weil ich mit Excel 2000 arbeite? Ich habe mir genau wie in der Grafik "SOLL" eine Tabelle erstellt um das *** VBA zu versuchen - leider ohne Erfolg. In meiner original Tabelle verteilen sich die Daten von Spalte A bis Spalte R - das Ergebnis sollte in Spalte S stehen. Was mache ich falsch?? Steh auf dem Schlauch. Danke Dir für die Hilfe Gruß Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 05. Dez. 2006 14:00 <-- editieren / zitieren --> Unities abgeben: Nur für Martin_0103
Zitat: In meiner original Tabelle verteilen sich die Daten von Spalte A bis Spalte R - das Ergebnis sollte in Spalte S stehen.
daran liegt's ; ) mein code geht davon aus, daß die Daten in Spalte A:C stehen und in E sollen. Also mußt Du auch den Bereich A:R durchsuchen lassen und dann natürlich die select case Anweisung auf die richtigen Spalten erweitern select case = 1 heißt: Daten stehen in Spalte a -> cell.offset(0,4)-> schreib sie 4 zellen weiter rechts hin.. das mußt Du jetzt natürlich anpassen ; ) ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin_0103 Mitglied
Beiträge: 181 Registriert: 05.02.2003 3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3
|
erstellt am: 05. Dez. 2006 14:42 <-- editieren / zitieren --> Unities abgeben:
Dank Dir für die Antwort.. das war mir schon klar. Da ich den Code angepaßt hatte und es nicht lief hab ich eine Tabelle erstellt, die der Grafik "SOLL" gleicht und den original Code versucht - leider ohne Erfolg. Wenn ich das Makro aufrufe dreht sich der Zeiger ne Weile aber nichts passiert. Lieben Gruß Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 05. Dez. 2006 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für Martin_0103
Was läuft wo nicht? hmmm, da bleibt alles neblig up die Mapp' ! so kann ich nix dazu sagen, weiß ja nicht, wo Du was angepaßt hast.. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Martin_0103 Mitglied
Beiträge: 181 Registriert: 05.02.2003 3,4 GHz - Quadro 4000 - 12 GB RAM - WIN7 - IV2010 SP3
|
erstellt am: 05. Dez. 2006 15:32 <-- editieren / zitieren --> Unities abgeben:
Ich danke Dir... es geht! Bist wieder einmal meine Retterin! Es lag irgendwie an der Formatierung bzw. Filtern die ich gesetzt hatte - weiß nicht genau, vielleicht auch an dem "ON/OFF Button" . Aber nun läuft es ja... Danke Dir Gruß Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 05. Dez. 2006 20:25 <-- editieren / zitieren --> Unities abgeben: Nur für Martin_0103
|