Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1184to1188
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

VBA-Lösung, Art Sverweis ?!

VBA-Lösung, Art Sverweis ?!
KLE
Hallo,
habe mal wieder eine kleine Herausforderung für mich - wo ihr euch sicherlich "lächerlich" und "kinderkram" denkt. Folgendes:
Ich habe eine Datei mit 2 Arbeitsblättern. In beiden sind einige Tausend Artikel aufgeführt. Nun soll in einem Blatt der User Bemerkungen zu den Artikeln schreiben können, sowie in 3 weiteren Spalten Kennzeichen für verschiedene Bestell und Lieferbedingung eintragen können. Sieht ungefähr so aus:
ID, ArtikelNr., Artikelbezeichnung, EK, VK, Sollmenge, Istmenge, Lieferzeit, VPE, Bemerkung, KPI1,KPI2,KPI3
In der anderen Datei sind die gleichen SPalten sowie noch ca. 50 weitere interne Spalten mit Kennzeichnungen für unser WWS. Daher soll hier keiner drin arbeiten. Habe es so aufgebaut, dass per Klick - alle Datensätze aus dem Stammdatenblatt kopiert und in dem User-Blatt eingefügt werden. (Nur die oberen Spalten...!). Dann soll der User diese Kennzeichnungen und Bemerkungen vornehmen...und per Klick, soll nun alle Daten wieder zurückgeschrieben werden in das Datenblatt. Dieses kann dann von unserem WWS eingelesen werden...so ist alles wieder im System. (Soll so ablaufen! - Cheffe)
Nun meine Frage: Wie kann ich eine schnelle Methode finden, dass wirklich die richtigen Daten zugeordnet werden. Das Feld ID würde sich anbieten (Ein-Eindeutiges Feld). Da ich nicht verhindern kann und will, dass jemand die Userdaten anders sortiert oder aus welchen Gründen auch immer Zeilen löscht etc.
Gibt es eine schnelle (da ca. 3-5.000 Artikel geführt werden) Sverweis-Methode in VBA ?! So sinngemäß:
Suche ID des Userblatts im Stammdatenblatt und trage dann in dieser Zeile die neuen Daten (KPIs) ein.
Viel Text, hoffe ihr habt so meine Situation besser verstanden und könnt mir helfen ?!
Gruß
Kay

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
ich habe keine Lösung, aber
14.11.2010 07:36:07
Oberschlumpf
Hi Kay
Allein schon deine Bemerkung: Sieht ungefähr so aus...
sorgt dafür, dass ich nich wirklich helfen will.
Warum?
Kann ich dir erklären.
Stell dir vor, jemand gibt dir genau diese Aufgabe. Nur Erklärungen und eben der Hinweis - Sieht ungefähr so aus
Was machst du jetzt?
Du erstellst eine Tabelle und....huch!...und WO sollen die Daten stehen?...huch...und um was für Daten handelt es sich überhaupt?
Du denkst vielleicht: "Ach, egal, wird schon irgendwie"
Du erstellst also eine Tabelle und fügst mehrere, viele Daten hinzu, die du ja zum Testen benötigst.
Du hast aber z Bsp gar keine Ahnung, wie die ID aussieht.
Irgendwann bist du fertig, gibst ab - und - der "Auftraggeber" sagt: "Aber nee! So geht das nicht! Meine Originialdatei sieht doch ganz anders aus/fängt in anderen Zeilen an und es werden doch auch ganz andere Spalten benutzt!
Verstehst du so langsam, worauf ich hinaus will?
Stell uns bitte eine Datei mit Inhalt zur Verfügung, die ganz genau so aussieht, wie deine Originaldatei. Bei den Daten kannst du natürlich (sinnvolle) Bsp-Daten eintragen.
Ich, wie gesagt, werde wohl keine Lösung kennen.
(auch bei Vorlage einer Bsp-Datei würde mein Wissen wohl nicht reichen, um helfen zu können)
Aber ich wollte ja auch nur darauf hinweisen, dass du mit ner Bsp-Datei vllt mehr Erfolg bzgl. helfender Antworten hast.
Ciao
Thorsten
Anzeige
AW: VBA-Lösung, Art Sverweis ?!
14.11.2010 13:49:43
Dirk
Hallo Kay,
da die Struktur Deiner Arbeitsblaetter dieselbe ist koenntest Du ja mit PictureLink arbeiten.
Markiere die Spalten, in welche der User Eintragungen vornehmen soll in dem Userblatt und setze die Zellen auf unlocked. Die Spalten fuer die Eintragungen sind z.B. Spalte 8,9,10,11,12
Die Spaltenbezeichnung kannst Du auch eintragen und ggf. mit zelle gesperrt schuetzen.
Nun gehe in Dein Stammdatenblatt, Markiere die Zeilen/Spalten, welche der User sehen soll und waehle 'kopieren' aus dem Menue 'Bearbeiten'
Nun zurueck zum Userblatt und selektiere die erste Zelle, in welcher sic der Erste Datensatz in Deinen Stammdaten befindet. Nun Shift Taste halten und im Menue 'Bearbeiten' den Eintrag 'Einfuegen Bildverknuepfung' (heisst bei mir 'paste picture link') anklicken.
Jetzt das Blatt sperren, sodass nur die vorher freigegebenen Zellen veraendert werden koennen.
Nun sollte im Userblatt der Teil der Tabelle Deiner Stammdaten sichtbar sein, ohne das der User diese aendern kann.
Vieleicht ist das ja die Loesung fuer Dein Problem?
gruss
Dirk aus Dubai
Anzeige
AW: Musterdatei anbei, um Eure Hilfe zu erhalten!?
14.11.2010 16:02:18
KLE
Hallo,
klar - eine Musterdatei macht mehr Sinn, wie ein langer Text - ohne richtig es Beschreiben zu können.
Daher hier eine Musterdatei. Die Original-Datei hat ca. 4500 Datenzeilen und insgesamt 54 Spaltem, bevor die User-Daten (Bemerkung, KPI1-3) "rangehangen" werden sollen.
Hatte eine Schleife mit Sverweis probiert...dauert aber ewig! Daher meine Frage: ob jemand einen anderen Ansatz kennt...
Musterdatei: https://www.herber.de/bbs/user/72289.xlsm
Gruß und Danke
Kay
AW: Musterdatei anbei, um Eure Hilfe zu erhalten!?
14.11.2010 17:05:24
Daniel
Hi
der SVERWEIS ist für diese Aufgabe bestens geeignet und schnell genug, wenn man es richtig macht und den richtigen Sverweis verwenden (dh. 4. Parameter = TRUE)
hierfür müssen die Daten der Suchmatrix allerdings nach dem Suchbegriff sortiert sein, aber da du eh mit Makros arbeitest, ist das ja kein Problem, der kleine Aufwand für das Sortiern und ggf erforderliche Rücksortieren lohnt sich auf jeden Fall.
Die SVERWEIS-Formel hat mit sortierten Daten auch bei westentlich grösseren Datenmengen kein Performance-Problem.
Lediglich die Variante mit unsortieren Daten (4. Parameter = FALSE) ist grottenlangsam.
im Prinzip müsstest du also ein Makro schreiben, daß´folgendes macht:
1. ursprungsreihenfolge der Userdaten sichern (z.B. in eine Hilfsspalte die Zeilennummern schreiben)
2. die Userdaten nach der ID-Nummer sortieren
3. in den Stammdaten die SVERWEIS-Formel eintragen (bitte icht als Schleife !, sondern immer für den ganzen Zellbereich komplett)
4. in den Stammdaten die Formeln durch Werte ersetzen
5. die Userdaten wieder in die originale Reihenfolge zurücksortieren.
Gruß, Daniel
Anzeige
AW: Musterdatei anbei, um Eure Hilfe zu erhalten!?
15.11.2010 03:14:10
KLE
Danke ! Probier ich morgen aus...
AW: VBA-Lösung, Art Sverweis ?!
14.11.2010 19:22:47
Gerd
Hallo Kay,
sortierst Du noch? :-)
Sub test()
Dim idU, idS, lngU As Long, lngS As Long, txtarrU, txtarrS, vgl, L As Long
idS = WorksheetFunction.Transpose(Sheets("Stammdaten").Range(Sheets("Stammdaten").Cells(5, 1),  _
Sheets("Stammdaten").Cells(5, 1).End(xlDown)).Value2)
idU = WorksheetFunction.Transpose(Sheets("Userdaten").Range(Sheets("Userdaten").Cells(5, 1),  _
Sheets("Userdaten").Cells(5, 1).End(xlDown)).Value2)
txtarrS = Sheets("Stammdaten").Range(Sheets("Stammdaten").Cells(5, 1), Sheets("Stammdaten"). _
Cells(5, 1).End(xlDown)).Offset(, 10).Resize(, 4)
txtarrU = Sheets("Userdaten").Range(Sheets("Userdaten").Cells(5, 1), Sheets("Userdaten").Cells( _
5, 1).End(xlDown)).Offset(, 9).Resize(, 4)
For lngU = LBound(idU) To UBound(idU)
vgl = Application.Match(idU(lngU), idS, 0)
If IsNumeric(vgl) Then
If Application.CountA(txtarrU) > 0 Then
For L = 1 To 4
txtarrS(CLng(vgl), L) = txtarrU(lngU, L)
Next L
End If
End If
Next lngU
Sheets("Stammdaten").Range(Sheets("Stammdaten").Cells(5, 1), Sheets("Stammdaten").Cells(5, 1). _
End(xlDown)).Offset(, 10).Resize(, 4) = txtarrS
End Sub
Gruß Gerd
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige