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

Makro, das Sverweis macht

Makro, das Sverweis macht
Jockel
Hallo,
ich habe eine Arbeitsmappe, da habe ich in der Spalte F (ab Zeile 7) Materialnummern drin. Daneben in Spalte G, H und I ist leer.
Zusätzlich habe ich eine zweite Arbeitsmappe, in der sind die besagten Materialnummern in der Spalte A drin.
Neben dieser Spalte A, in Spalte B, C und D sind zu jeder Materialnummer zusätzliche Informationen drin.
Nun würde ich gerne in der ersten Arbeitsmappe ein Makro Starten, das sich die erste Materialnummer in der Spalte A holt, die zweite Mappe öffnet und dort in der Spalte A nach der gleichen Materialnummer sucht.
Wird diese gefunden, sollen von dort die Informationen (wenn vorhanden) aus den Spalte B, C und D in meine erste Tabelle in die Spalten G, H und I geschrieben werden.
Dann den nächsten DS Prüfen usw...
Hat da jemand eine Idee, wie man das machen könnte ?
Vorerst, danke
Jockel
Und warum per VBA? o.T.
26.11.2011 17:41:38
Josef
« Gruß Sepp »

AW: Und warum per VBA? o.T.
26.11.2011 18:11:39
Jockel
Hi Sepp,
Gibt es eine bessere Lösung ? Meinst du mit Formeln ? Ein Makro wäre mir am liebsten, da ich in der Mappe allen in VBA Programmiert haben.
Gruss
Jockel
AW: Und warum per VBA? o.T.
26.11.2011 18:20:06
Josef

Hallo Jockel,
wenn du schon "allen in VBA Programmiert haben", dann wird das wohl kein Problem sein!
Das geht doch einfach per INDEX/VERGLEICH, wenn doch per VBA und wenn du es selber nicht hinbekommst, dann lade eine Beispieldatei mit den zwei Tabellen hoch, aber bitte die Tabellen so, wie sie wirklich aufgebaut sind, nicht das man nachher endlos herum basteln muss!

« Gruß Sepp »

Anzeige
AW: Und warum per VBA? o.T.
26.11.2011 18:57:18
Jockel
Hallo Sepp,
doch, ist leider ein kleines Problem.
hier sind mal die beiden Dateien.
Die erste Datei (Katalog) ist praktisch meine Referenzliste, in der ich nachschaue will:
https://www.herber.de/bbs/user/77675.xls
Und in dieser Datei fehlen teilweise Einträge, die aus der REferenzliste vervollständigt werden soll:

Die Datei https://www.herber.de/bbs/user/77676.xls wurde aus Datenschutzgründen gelöscht


Bist du der Meinung, das es mit dem INDEX/VERGLEICH besser und einfacher geht, dann würde ich mich natürlich umstimmen lassen.
GRuß
Jockel
Anzeige
Super, vielen Dank ..
26.11.2011 20:14:49
Jockel
Hallo Sepp,
Vielen Dank für Deine Hilfe und dann auch noch beide Möglichkeiten :-)
Habe mal ein bischen herum gespielt, die makrolösung gefällt mir am besten.
Habe auch mal den Zielbereich ein bischen verschoben und das Makro angepasst, um zu sehen, ob ich das alles richtig versteht.
Alles wunderbar.
Zur zum Verständnis : wenn sich in meiner Katalogdatei der Kopf oben ändern würde, zB. ein kommt noch eine zusätzlich Zeile mit Spaltenköpfen hinzu, würde das Makro nicht mehr funktionieren.
Im Code habe ich gemeint zu sehen, dass der Code in der ersten Zeile des Katalogs nach dem String "MaterialNummer" sucht.
Was müsste ich ändern, dass die Suche der Daten in meiner Katalogdatei erst ab Zeile 3 losgehn, sprich , in Zeile 2 ist der Spaltenkopf ?
Danke
Jockel
Anzeige
AW: Super, vielen Dank ..
26.11.2011 21:27:05
Josef

Hallo Jockel,
grundsätzlich sollte eine Tabelle bei einer ADO-Abfrage immer in A1 beginnen.
Du kannst es aber mal so probieren.
Private Sub CommandButton1_Click()
  Dim rng As Range
  Dim objADO As Object
  
  For Each rng In Range("F7:F" & Application.Max(7, Cells(Rows.Count, 6).End(xlUp).Row))
    If rng <> "" Then
      Set objADO = ExcelTable(Range("A1").Text, "Tabelle1", "A3:D30000", "Where MaterialNummer = " & rng.Text)
      rng.CopyFromRecordset objADO
      objADO.Close
    End If
  Next
  
End Sub



« Gruß Sepp »

Anzeige
AW: Super, vielen Dank ..
26.11.2011 21:53:16
Jockel
Hallo Sepp,
das hatte ich schon versucht , mit A3:D100 aber da habe ich immer eine Fehlermeldung in der Zeile
ExcelTable.Open SQL, Con, 3, 1
bekommen. darum dachte ich , es wäre eine andere Ursache.
Gruß
Jockel
Hallo Sepp , jetzt klapps...
26.11.2011 22:19:19
Jockel
Hallo Sepp,
habs gerade noch mal getestet, jetzt gehts, lag mit Sicherheit an mir.
Also noch mal vielen Dank, hast mir sehr geholfen.
Gruß
Jockel
Hallo Sepp , bitte noch mal kurze Hilfe...
28.11.2011 10:51:09
Jockel
Hallo Sepp,
Noch mal kurze Frage:
Ich wollte das gleiche Prinzip mit gleichen Dateien mal auf andere Daten ausprobieren. Sprich: in meiner Katalogdatei (in der Datei, wo das Makro nachschauen soll) stehen in der Spalte A nun keine Materialnummern (Numeric) sondern einfacher Text zB. "Bambi 10" oder "Bild 120"
Die gleichen Strings habe ich nun auch in meiner VerarbeitungsDatei drin.
Sobald ich den Inhalt der Tabellen ändere, also es sich nicht mehr um eine Ziffer (Materialnummer) handelt, sondern um einen String, funktioniert das Makro nicht mehr.
Laufzeitfehler -2147217904 (80040e10)
Für mind. einen erforderlichen Parameter wurde kein Wert angegeben.
Wo im Makro steht denn drin, dass es sich beim Inhalt der beiden abzugleichenden Spalren, es sich um eine Ziffer handeln muss und nicht Text ?
Den Deffinitionen nach ist alles als String definiert.
Hast Du mir bitte noch mal einen Rat ?
Danke
Jockel
Anzeige
AW: Hallo Sepp , bitte noch mal kurze Hilfe...
28.11.2011 17:04:52
Josef

Hallo Jockel,
Datenabfragen mit ADO/DAO sind nicht ganz einfach gestrickt. Die auszuwertenden Daten müssen unbedingt den Kriterien einer Datenbank entsprechen. (Überschriften, keine Leerzeilen, einheitlicher Datentyp pro Spalte, etc.)
Ohne deine Datenquelle zu kennen, kann ich nichts zum Fehler/Problem sagen.

« Gruß Sepp »

Anzeige
Hier mal das Beispiel als Datei
28.11.2011 21:13:05
Jockel
Hallo Sepp.,
also die Quelldaten sind einfach Excel. Ich habe dir hier mal ein Beispiel.
In der Datei VERARBEITUNG sind die Daten mit den zum Teil leeren Feldern. Mit dem Unterschied, meine Referenz in der Spalte F ist nun keine Ziffer mehr (Materialnummer) sondern ein einfacher Text.
Ich habe im Prinziep nur die Spalte MaterialNummer und Produkt getauscht.
in meiner Datei Katalog sind praktisch die Referenzdaten drin.
Im Prinziep soll alles gleich funktionieren (wie in deinem ersten Beispiel) ausser dass in Spalte F nun keine Ziffern mehr drin steht, sondern Text. Wenn G, H oder I leer sind, solle diese mit Daten aus dem KATALOG gefüllt werden.
Teste mal, ob es bei dir funktioniert, oder ob die auch eine Fehlermeldung bekommst.
https://www.herber.de/bbs/user/77713.zip
Wäre furchtbar nett.
Danke mal
Jockel
Anzeige
AW: Hier mal das Beispiel als Datei
28.11.2011 22:09:02
Josef

Hallo Jockel,
bei Textwerten muss der Parameter in ' eingeschlossen werden

"Where Produkt = '" & rng.Text & "'"
Außerdem besteht das Problem, das die Datensätze nicht mehr eindeutig sind ("Rolle" gibt es z. B. 2mal) und das kann dann so nicht funktionieren.

« Gruß Sepp »

Anzeige
So ist es OK.... :-)
28.11.2011 22:22:32
Jockel
Hallo Sepp,
Danke, so funktioniert es , Super.
das mit den doppelten sollte kein Problem sein, die Daten sind von mir in diesem Beispiel nur runter kopiert worden. Kommt bei meinen richtigen Daten nicht vor, da MUSS sogar alles eindeutig sein.
Von daher passt das.
Also vielen Dank noch mal
Gruß
Jockel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige