Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Excel VBA gefilterte Spalten vergleichen

Mitglied: YotYot

YotYot (Level 1) - Jetzt verbinden

10.12.2014, aktualisiert 11.12.2014, 3269 Aufrufe, 3 Kommentare, 1 Danke

Aloha!

Ich bin seit satten fünf Stunden auf der Suche nach einer funktionierenden Lösung und scheitere daran, dass ich nicht in der Lage bin, fehlerhafte Makros, die ohne Erklärung kommen, zu korrigieren. Nebenbei brennt mir natürlich die Zeit, ist klar... Excel ist eben nicht Access, die Anforderungen ändern sich gerade

Die Ausgangssituation:
Ich habe eine Excel-Tabelle mit zwei Tabellenblättern, "links" und "rechts". Interessant sind die Spalten links.H und rechts.B. Auf beiden Tabellenblättern befinden sich Datensätze aus unterschiedlichen Quellen, die sich also voneinander unterscheiden, die aber in den genannten Spalten teilweise eine Schnittmenge haben. In links.H können die Werte öfter vorkommen, in rechts.B sind die Werte nur einmal vorhanden. Nun ist die Tabelle "links" auch noch gefiltert, d.h., von gut 1200 Datensätzen werden nach Filterung nur vielleicht 70 angezeigt, auch hier gibt es in links.H doppelte Werte. "rechts" ist nicht gefiltert. Beide Tabellen sind unterschiedlich sortiert.

Die Aufgabe:
Ich will links.H mit rechts.B vergleichen und überall da, wo in rechts.B ein Wert auftaucht, der auch in links.H enthalten ist, den Wert aus rechts.A, also der daneben liegenden Zelle kopieren und in die Zelle(n) links.P einfügen, wo in der entsprechenden Zeile ebenfalls der gefundene Wert steht. Um das ein wenig zu verdeutlichen:

Zeile links.H rechts.A rechts.B
17 45789 b1n2m3 41254
44 45795 j433k43 39877
99 41254 k4l5553 29544
100 41254 l9m666 33998
119 43777 a55f99 45789


In Zeile 99 und 100 steht in links.H also ein Wert, der in rechts.B in Zeile 17 auftaucht. Jetzt soll rechts.A.Zeile17 kopiert werden nach Links.P.Zeilen99 und 100.

Alle Scripts, die ich bisher getestet habe, funktionieren entweder gar nicht oder liefern mir falsche Werte zurück, die nicht stimmen oder schreiben sie in falsche Felder. Sogar die Vorab-Version, dass ich nur die gefundenen Zellen farblich markiere, funktioniert nicht richtig, es werden falsche Zellen eingefärbt, teilweise sogar leere zellen (unterhalb der eigentlichen Tabelle, wenn ich mit der gesamten Spalte arbeite).

Wie macht man sowas? Verschachtelte For each Schleifen, ok, aber irgendwie klappt das zählen nicht richtig...

Kann mir da mal jemand 'nen Zaunpfahl leihen?

Grüße

Y.
Mitglied: colinardo
LÖSUNG 10.12.2014, aktualisiert 11.12.2014
Aloha! Pehea `oe YotYot?
kein Problem, den Zaunpfahl ramm ich dir doch gleich ganz ins Gehirn ... es ließe sich zwar auch mit einer einfachen Formel lösen, da du aber so wie es aussieht nach einem Makro suchst, hier die entsprechende Lösung für dein Anliegen:
In Zeile 4 und 6 legst du noch die Namen der Worksheets fest, feddich. Die Zeilen sind alle kommentiert, so dass eine Anpassung nichts im Wege stehen sollte. Ich bin jetzt einfach mal davon ausgegangen das in den Sheets jeweils die erste Zeile eine Überschrift beinhaltet, und die Daten ab Zeile 2 beginnen.

Hier auch noch das Demo-Sheet map_values_257257.xlsm
01.
Sub FindAndSetValues() 
02.
    Dim wsLinks As Worksheet, wsRechts As Worksheet, rngSearch As Range, rngRef As Range, cell As Range, firstAddress As String, f As Range 
03.
    'linkes Sheet festlegen 
04.
    Set wsLinks = Sheets("links") 
05.
    'rechtes Sheet festlegen 
06.
    Set wsRechts = Sheets("rechts") 
07.
    'Bereich in dem im linken Sheet gesucht wird (nur sichtbare Zellen werden verarbeitet, ausgefilterte nicht) 
08.
    Set rngSearch = wsLinks.Range("H2:H" & wsLinks.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible) 
09.
    'Bereich der Referenz-Werte im rechten Sheet 
10.
    Set rngRef = wsRechts.Range("B2:B" & wsRechts.UsedRange.Rows.Count) 
11.
     
12.
    'Für jede Zelle im Bereich der Referenz-Werte 
13.
    For Each cell In rngRef 
14.
        'wenn Zellwert nicht leer ist ... 
15.
        If cell.Value <> "" Then 
16.
            'Suche Wert der Zelle im linken Sheet 
17.
            Set f = rngSearch.Find(cell.Value, LookIn:=xlValues, Lookat:=xlWhole) 
18.
            If Not f Is Nothing Then 
19.
                firstAddress = f.Address 
20.
                Do 
21.
                    'setze Wert im linken Sheet Spalte P auf den Wert von Sheet Rechts Spalte A 
22.
                    f.Offset(0, 8).Value = cell.Offset(0, -1).Value 
23.
                    'Alternativ könntest du die obige Zeile auch so schreiben dann ist es für dich vielleicht verständlicher 
24.
                    'wsLinks.Range("P" & f.Row).Value = wsRechts.Range("A" & cell.Row).Value 
25.
                     
26.
                    'Suche ob der Wert erneut vorkommt 
27.
                    Set f = rngSearch.FindNext(f) 
28.
                Loop While Not f Is Nothing And f.Address <> firstAddress 
29.
            End If 
30.
        End If 
31.
    Next 
32.
End Sub
Grüße Uwe
Bitte warten ..
Mitglied: YotYot
11.12.2014 um 09:41 Uhr
Man muss halt nur jemanden fragen, der sich auskennt

Hallo Uwe!

Das war jetzt mal fast unbezahlbar... wenn ich mir überlege, wie viele nicht funktionierende Scripts ich gestestet habe und was ich versucht habe, umzuschreiben mit dem Wissen aus Access und Javascript - aber Excel VBA ist halt doch noch mal 'ne andere Sprache: xlValues, xlWohle usw sind für mich halt noch neu, da muss ich mich noch einfinden.

Läuft. Fehlerfrei. Gleich vom ersten Versuch an. Und außerdem wesentlich schneller, als das, was ich gestern getestet habe. Bin begeistert! Danke!

Und ja, ich wollte es unbedingt in VBA haben, erstens weil ich mich da einarbeiten will, weil es in Zukunft öfter mal Anforderungen in der Richtung geben kann und zweitens sind in den kopierten Zellen IDs drin, die ich zum Erstellen von Weblinks noch weiterverarbeiten muss. Macht dann ja Sinn, wenn alles in einem Guß ist. Außerdem kann man dann bei Bedarf noch ein wenig mehr damit anstellen.

Nochmal: Danke, bin voll begeistert!

Y.

Achso: was heißt eigentlich "Pehea `oe"? Bin soweit gekommen, dass es wohl sowas wie "Was ist", also "Was heißt" vermutlich bedeutet? Yot (Jott) ist der erste Buchstabe meines Namens.

Grüße aus Bremen,

Jörg
Bitte warten ..
Mitglied: colinardo
11.12.2014 um 09:59 Uhr
Hallo Joerg,
ich dachte wenn schon auf Hawaiianisch begrüßt muss ich doch Kante zeigen
Achso: was heißt eigentlich "Pehea `oe"?
>>"Hallo, wie geht's dir ?"<<

Viel Erfolg beim VBAen
Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
VB for Applications
Inhalte vergleichen - Excel VBA
gelöst Frage von Acht85VB for Applications10 Kommentare

Hallo lieber User, ich habe ein kurze Frage und würde mich sehr freuen, wenn ihr mir damit weiterhelfen könnt. ...

Microsoft Office

Excel-VBA: Alle Werte einer Spalte in einer anderen Suchen

gelöst Frage von KevinPMicrosoft Office4 Kommentare

Hallo, ich hänge jetzt schon seit Tagen dran und komm nicht zu Rande. Ich versuche jeden Wert eines Tabellenblattes ...

VB for Applications

Über VBA kopieren des gefilterten Bereiches

Frage von BlueLinesVB for Applications1 Kommentar

Hallo an Alle Könnte mir vielleicht jemand mit diesem Code weiterhelfen. 1. Problem: Er soll aus einer Mappe die ...

VB for Applications

Excel, viele Spalten miteinander vergleichen - ordnen - markieren

gelöst Frage von tobiileinVB for Applications6 Kommentare

Hallo zusammen, ich habe derzeit folgendes Problem: Ich soll von einigen Servern eine Paketliste erstellen und diese dann in ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 1 TagWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 1 TagAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 2 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 2 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...

Hyper-V
Hyper-V mit altem XEON-Server. Was ist falsch?
Frage von LollipopHyper-V11 Kommentare

Hallo Bin etwas frustriert. Kleinbetrieb, ca. 15 PC's, 2 Stk. Server mit einigen virtuellen PC's für Fernwartung, VaultServer für ...

Windows Server
NTFS Berechtigungen Ordnerstruktur
Frage von hukahu23489Windows Server11 Kommentare

Hallo, ich bin seit kurzem in einer neuen IT-Abteilung und bin über das Berechtigungskonzept des Unternehmens sehr schockiert. Ich ...