Autor
|
Thema: Suchen und kopieren (5226 mal gelesen)
|
Bonkers Mitglied Techn. Angestellter
Beiträge: 553 Registriert: 26.01.2005 Intel(R) Xeon (R) E5-1620 v3 3.50GHz 16 GB RAM WIN 7 Prof. 64 Bit - SP1 NVIDIA Quadro K2200 Inventor 2015 SP2.2 Vault Workgroup 2015
|
erstellt am: 10. Mai. 2005 13:03 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Excel Spezialisten, hab mich mal mit Makros ein wenig beschäftigt, doch leider hab ichs nur teilweise hin bekommen. Ich hoffe ihr könnt mir da weiter helfen! Ich habe eine sehr umfangreiche Excel Tabelle, wo die Daten immer zeilenweise eingegeben sind. Diese Tabelle beinhaltet über 12000 Zeilen. Deshalb funktioniert leider der Autofilter nicht, da er nur bis zu 1000 Zeilen berücksichtigt. Ich hätte nun versucht, ein Makro zu erstellen, dass folgendes macht: Beim öffnen der Excel-Datei öffnet sich ein Fenster, wo der zu suchende Begriff eingegeben wird. Danach sollen alle Zeilen (aus allen Tabellenblättern), in der dieser Begriff vorkommt kopiert und in eine neue Tabelle eingefügt werden und dieses als akives Tabellenblatt öffnet! Meine Versuche, die ich bereits gemacht habe, waren aus verschiedenen Beiträgen hier aus diesem Forum zusammen gebastelt. Funktioniert aber leider nicht so wirklich! Bitte um eure kompetente Hilfe! Vielen Dank!
------------------ Fg Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rainberg Mitglied
Beiträge: 147 Registriert: 14.01.2005
|
erstellt am: 10. Mai. 2005 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
Hallo Mario, dazu würde sich der Spezialfilter sehr gut eignen. Dieser könnte dann mit einem Makro aktiviert werden. Um dir das genauer erklären zu können, wären aber noch paar Angaben erforderlich. - um wieviele Spalten handelt es sich - wieviele Suchkriterien gibt es - in welchen Spalten stehen die Suchkriterien usw. Vorteihaft wäre es, wenn du ein stark abgespecktes Beispiel mit verfälschten Daten hochladen könntest. Wichtig ist, dass man die Struktur der Tabelle und die Datentypen der Kriterien-Spalten zweifelsfrei erkennt. ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bonkers Mitglied Techn. Angestellter
Beiträge: 553 Registriert: 26.01.2005 Intel(R) Xeon (R) E5-1620 v3 3.50GHz 16 GB RAM WIN 7 Prof. 64 Bit - SP1 NVIDIA Quadro K2200 Inventor 2015 SP2.2 Vault Workgroup 2015
|
erstellt am: 10. Mai. 2005 14:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Rainer, schon mal herzlichen Dank für deine Anregungen. Werde heute Abend mal eine vereinfachte Version der Datei erstellen und hochladen. Das wichtigste soll aber sein, das es ganz einfach zu bedienen ist. Im Prinzip wärs ja der Autofilter, der sehr gut funktioniert. Doch macht er nur die 1000 Zeilen. Warum es einfach funktionieren soll: Es arbeiten mit dieser Tabelle mehrere Leute, auch ältere mit eher weniger PC Kenntnissen. Die restlichen Sachen gibts dann mit der Datei dazu! ------------------ Fg Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bonkers Mitglied Techn. Angestellter
Beiträge: 553 Registriert: 26.01.2005 Intel(R) Xeon (R) E5-1620 v3 3.50GHz 16 GB RAM WIN 7 Prof. 64 Bit - SP1 NVIDIA Quadro K2200 Inventor 2015 SP2.2 Vault Workgroup 2015
|
erstellt am: 11. Mai. 2005 08:02 <-- editieren / zitieren --> Unities abgeben:
Wünsche einen Guten Morgen! So hab jetzt mal ne kurze Beispieldatei mit 3 Einträgenhochgeladen. In der Originaldatei sind es ja über 12.000 Zeilen. Am besten und vielleicht einfachsten, wäre es den Suchbegriff Zeilenweise zu suchen. Hilfreich wäre noch, wenn man nur die einige Buchstaben ins Suchfeld schreiben müsste (Bsp. für Zeile 1 --> Bogen) und es werden alle Zeilen, in denen Bogen* vorkommt auf ein neuen Tabellenblatt kopiert. Super wäre noch wenn dort dann der Autofilter aktiviert werden kann! So können mehrfach Einträge nach den weiteren Kriterien dann gefiltert werden! Falls das nicht funktioniert, hab ich in der Beispieldatei die Suchfelder farbig gekennzeichnet. 1. Adresse = SName (beinhaltet die Spalten SName1, SName2 und SName3) 2. (Ev. als Ergänzung zu 1.) Hausnummer = SNr (beinhaltet die Spalten SName1, SName2 und SName3) 3. Eigentümer = Eigentümer 4. Informationen bzw. Vulgo-Name = weitere Informationen bzw. Vulgo-Name 5. Ortschaft = Ortschaft 6. (Ev. als Ergänzung zu 5.) Ortsnummer = ONr Wichtig wäre eben wie schon beschrieben die Einfachheit! Ich hoffe es ist jetzt soweit verständlich! ------------------ Fg Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002
|
erstellt am: 11. Mai. 2005 13:35 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
Hallo Bonkers, ich hab dir einen Code zu deiner Tabelle hinzugefügt. Er durchsucht sämtliche Spalten nach dem eingegebenen Suchbegriff und schreibt die gefundenen Zeilen in Tabelle 2. (geht auch bei 12000 zeilen noch ziemlich flott) pablo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bonkers Mitglied Techn. Angestellter
Beiträge: 553 Registriert: 26.01.2005 Intel(R) Xeon (R) E5-1620 v3 3.50GHz 16 GB RAM WIN 7 Prof. 64 Bit - SP1 NVIDIA Quadro K2200 Inventor 2015 SP2.2 Vault Workgroup 2015
|
erstellt am: 11. Mai. 2005 13:39 <-- editieren / zitieren --> Unities abgeben:
|
rainberg Mitglied
Beiträge: 147 Registriert: 14.01.2005
|
erstellt am: 11. Mai. 2005 19:35 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
Hallo Mario, so ganz schlau bin ich aus deiner Erklärung nicht geworden, auch deine Datei ist äußerst mager um damit auch einigermaßen testen zu können. Ich habe dich nun so verstanden, das du nach Namen oder Teilen von Namen aus Spalte D der Objektliste filtern und die gefilterte Liste auf einenem anderen Tabellenblatt ausgeben willst. Dem entsprechend habe ich mein Beispiel aufgebaut. Es ist jedoch auch möglich nach mehreren Kriterien zu filtern, aber man muss halt genau wissen nach welchen. Kannst dich ja noch mal melden. Übrigens, den Autofilter kannst du ohne Probleme auf die gefilterte Liste anwenden.
------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bonkers Mitglied Techn. Angestellter
Beiträge: 553 Registriert: 26.01.2005 Intel(R) Xeon (R) E5-1620 v3 3.50GHz 16 GB RAM WIN 7 Prof. 64 Bit - SP1 NVIDIA Quadro K2200 Inventor 2015 SP2.2 Vault Workgroup 2015
|
erstellt am: 12. Mai. 2005 08:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Pablo, hallo Rainer! Vielen Dank für eure Hilfe, echt super und vor allem schnell!!!! @Pablo: Habe gestern noch lange mit deiner Lösung herumgespielt. Ich bin begeistert, das ist genau das, wie ich es mir vorgestellt habe. Sehr einfach und effektiv! Im neuen Tabellenblatt noch den Autofilter rein und schon läuft es wunderbar. Noch eine kurze Frage dazu: Kann ich bei der Dialogbox, wo die Suchwerte eingegeben werden die Schriftgrösse von "Gewünschte Zeichenfolge eingeben" etwas größer machen, oder ist das ein Fixwert? @Rainer: Ich weis ist etwas kompliziert diese Geschichte. Mir gefällt diese Liste auch nicht wirklich, aber da wir diese Datei nicht selbst erstellt haben und diese von Zeit zu Zeit aktualisiert wird müssen wir mit dieser arbeiten. Dafür ist Pablos Lösung optimal. Alte Daten herausgelöscht, die neuen hinein kopiert und es ist wieder up to date!
Vielen Dank nochmals!
------------------ Fg Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pablo Mitglied Techniker
Beiträge: 453 Registriert: 23.01.2002
|
erstellt am: 12. Mai. 2005 09:10 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
Zitat: Original erstellt von Bonkers: Noch eine kurze Frage dazu: Kann ich bei der Dialogbox, wo die Suchwerte eingegeben werden die Schriftgrösse von "Gewünschte Zeichenfolge eingeben" etwas größer machen, oder ist das ein Fixwert? [/B]
Die Schriftgröße lasst sich mit der VB-Inputbox nicht einstellen. Wenn weniger geübte User damit arbeiten sollen, würde ich ein eigenes Eingabeformular erstellen. pablo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bonkers Mitglied Techn. Angestellter
Beiträge: 553 Registriert: 26.01.2005 Intel(R) Xeon (R) E5-1620 v3 3.50GHz 16 GB RAM WIN 7 Prof. 64 Bit - SP1 NVIDIA Quadro K2200 Inventor 2015 SP2.2 Vault Workgroup 2015
|
erstellt am: 12. Mai. 2005 10:56 <-- editieren / zitieren --> Unities abgeben:
|
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz Office 2003
|
erstellt am: 22. Jul. 2008 22:54 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
die suchfunktion ist weltklasse. meine frage ist: kann man da noch irgendwie die GROß/Kleinschreibung abschalten - d.h. die suchfunktion sucht ja exakt die eingabe - d.h. wenn ein wort zweimal drin ist und einmal der erste buchstabe groß geschrieben ist - dann gehts ja nicht. das wär nämlich klasse wenn das ging. 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: 23. Jul. 2008 07:49 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
|
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz Office 2003
|
erstellt am: 23. Jul. 2008 09:04 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 23. Jul. 2008 09:14 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
Denk doch einfach mal drüber nach.. Du möchtest, dass die Groß- und Kleinschreibung ignoriert wird. Das kannst Du erreichen, indem Du sowohl den Suchbegriff als auch den Quelleintrag in Großbuchstaben (oder mit LCase in Kleinbuchstaben) umwandelst... Wie gesagt, das ist ein Ansatz, gibt bestimmt noch andere, aber der ist rel. schnell umzusetzen. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Excel -Suche RuA-Suche FAQ-ACAD Hilfe zu CAD.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz Office 2003
|
erstellt am: 23. Jul. 2008 11:29 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
|
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: 23. Jul. 2008 13:32 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
|
stolti Mitglied technischer zeichner
Beiträge: 373 Registriert: 05.09.2007 auto_cad 2008 athena 2008 DELL Precision PWS390 Intel Core2 CPU 6600 2gb RAM 2.40 GHz Office 2003
|
erstellt am: 28. Jul. 2008 12:21 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
so. ich wollt das jetzt mal probieren. aber ich hab keinen peil, WO genau man da anfangen soll. Option Explicit Private aSource As Variant Private aTarget As Variant Private aTitle As Variant Private TargetCounter As Long Public Sub SearchCells(ByVal sSearch As String) Dim i As Long ' Objekte terminieren TargetCounter = 0 aTarget = Null ' Aktives Tabellenblatt in Array lesen aSource = ActiveSheet.UsedRange ReDim aTarget(1 To UBound(aSource, 1) - 1, 1 To UBound(aSource, 2)) ' Array durchsuchen (ohne Titelzeile) For i = 2 To UBound(aSource, 1) CheckArray i, sSearch Next If TargetCounter > 0 Then ' Tabelle 2 aktivieren und ausfüllen ActiveWorkbook.Worksheets(2).Activate ActiveSheet.Range(ActiveSheet.Cells(2, 1), _ ActiveSheet.Cells(UBound(aSource, 1) - 1, UBound(aSource, 2))) = aTarget ' Es werden zusätzliche leere Zellen eingefügt, die sollte man noch löschen End If End Sub Public Sub CheckArray(ByVal Index As Long, _ ByVal sSearch As String) 'Durchsucht die über Index bestimmte Zeile nach den Suchbegriff 'bei Übereinstimmung wird AddLine aufgerufen Dim k As Long For k = 1 To UBound(aSource, 2) If InStr(1, CStr(aSource(Index, k)), sSearch) > 0 Then AddLine Index Exit Sub End If Next End Sub Public Sub AddLine(ByVal Index As Long) 'Schreibt eine Zeile mit gefundenem Suchbegriff in den Target-Array Dim k As Long TargetCounter = TargetCounter + 1 For k = 1 To UBound(aSource, 2) aTarget(TargetCounter, k) = aSource(Index, k) Next End Sub kann mir jemand nur einen tipp geben, wo genau das hingehört? danke
stolti 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: 28. Jul. 2008 14:03 <-- editieren / zitieren --> Unities abgeben: Nur für Bonkers
Hi stolti, Zitat: kann mir jemand nur einen tipp geben, wo genau das hingehört? danke
Du mußt in dem Part was tun, in dem die Suche ausgeführt wird, also im Teil Public Sub CheckArray genauer in der Funktion InStr die ja prüft, ob in einem String ein anderer String enthalten ist. ( Gibt einen Wert vom Typ Variant (Long) zurück, der die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge angibt.) Zitat: 'Durchsucht die über Index bestimmte Zeile nach den Suchbegriff 'bei Übereinstimmung wird AddLine aufgerufen
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Excel -Suche RuA-Suche FAQ-ACAD Hilfe zu CAD.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |