vielleicht hat jmd. eine charmante Idee für folgendes Problem: Mit einem Makro habe Registerkarten erstellt, die den Namen jedes Kunden tragen und will nun auf dieser Registerkarte seine Bestellmengen eintragen. Die stehen aber auf einem anderen Tabellenblatt. Dort müssen sie also identifiziert werden und an entsprechender Stelle eingefügt werden.
Tabelle mit den Kunden:
Name Artikel Anzahl Frau Muster Stifte 5 Frau Muster Block 6 Frau Muster Radiergummi 1 Herr Kleber Block 4 Herr Kleber Uhu 1
Registerkarte mit dem Kundennamen (Bsp. Frau Muster):
Anzahl Artikel 5 Stifte 6 Block 1 Radiergummi
Wie schaffe ich es also die Werte aus der Tabelle mit allen Kunden Spalte 3 auszulesen und in der Registerkarte mit den Kundennamen zuzuordnen? In der Registerkarte mit Kundennamen stehen die Artikel schon drin. Nach eingetragener Anzahl will ich dann nur nach den Artikeln filtern die nicht "0" sind. Letzteres bekomme ich bereits hin, nur den teil davor nicht ;)
dieses kleine Makro ist zwar sehr kurz, wird aber den gewünschten Zweck erfüllen. Als Universal Makro geschrieben!!
Mit fehlten die exakten Angaben zu Saplten und Zeilen in Bestellung und den Mitarbeiter Tabellen. Deshalb die Const Anweisungen im Kopf. Da bitte zuerst die pasenden Spalten und Zeilen entsprechend richtig angeben. Bei mir zum testen waren es Spalte A und Zeile 2. Die letzte Korrektur ist hier vorzunehmen: Set Bst = Worksheets("Tabelle5")
Da muss noch der richtige Name deiner Bestellung Tabelle angegeben werden. "Tabelle5" war ja nur zum testen! Nach diesen Korrekturen sollte das Makro einwandfrei laufen. Wurde in meiner Beispielmappe getestet.
mfg Gast 123
Code:
Option Explicit '21.12.2017 Gast 123 Clever Forum
Const BstSpalte1 = "A" '1. Spalte in Bestellung Tabelle Const MtaSpalte1 = "A" '1. Spalte der Mitarbeiter Tabelle Const BstZeile1 = 2 '1. Zeile Mitarbeiter Tabellen Const MtaZeile1 = 2 '1. Zeile der Artikeldaten
Sub Daten_kopieren() Dim lastTab As Long, k, j As Long Dim Sht As String, Artikel, Anzahl Dim Bst As Worksheet 'Bestllung Tabell Dim MSht As Worksheet 'Mitarbeiter Tab.
'** Name der Bestellungs Tabelle Set Bst = Worksheets("Tabelle5") '** Name ggf. aendern
'LastZell in Tabelle Bestellungen suchen, Spalte A lastTab = Bst.Cells(Rows.Count, BstSpalte1).End(xlUp).Row
'Schleife für alle Artikel in Bestellung Tabelle For k = BstZeile1 To lastTab With Bst.Cells(k, BstSpalte1) Sht = .Cells(1, 1).Value 'Mitarbeiter Tabelle Set MSht = Worksheets(Sht) 'als Objekt setzen Anzahl = .Cells(1, 3).Value Artikel = .Cells(1, 2).Value
'Schleife für gesuchten Artikel in Mitarbeiter Tabelle For j = MtaZeile1 To 10000 If MSht.Cells(j, MtaSpalte1) = Artikel Then MSht.Cells(j, MtaSpalte1).Offset(0, 2) = Anzahl End If Next j End With Next k End Sub
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • snake-84
ich sehe gerade der Kommentar im Makro ist falsch, und zwar hier: Const BstZeile1 = 2 '1. Zeile Mitarbeiter Tabellen Const MtaZeile1 = 2 '1. Zeile der Artikeldaten
vielen Dank erstmal für Mühe!!! Makro funktioniert bei mir allerdings nicht. Vielleicht hab ich es auch nicht gut genug erläutert oder verstehe deinen Vorschlag nicht. Hier nochmal detaillierter:
Hier die Registerkarte mit allen Kundendaten und Artikeln etc.
Registerkarten Name: "Tabelle2"
A B E 1 Name Artikel Anzahl 2 Frau Muster Stifte 5 3 Frau Muster Block 6 4 Frau Muster Radiergummi 1 5 Herr Kleber Block 4 6 Herr Kleber Uhu 1
Daraus macht mein bisherigen Makro automatisch Registerkarten mit den Namen der Kunden und kopiert eine Rechnungsvorlage (von Registerkarte 1) auf die jeweilige Registerkarte. das sieht dann so aus:
Registerkarten Name: "Name des Kunden" Frau Muster
Registerkarten Name: "Name des Kunden" z.B. Herr Kleber
A C Anzahl Artikel 19 0 Stifte 20 4 Block 21 0 Radiergummi 22 1 Uhu
Die rot markierten Zahlen sollen aus der "Tabelle2" entsprechend Kunden und seiner Bestellung übernommen werden. Ist es das was dein Makro macht und ich habe es nur falsch umgesetzt?
anbei eine Beispieldatei mit neuem Makro zum Daten ausfüllen. Für die Frage zum Autofilter habe ich vier Beispiele mit eingefügt, nur als gedankliche Anregung wie man es machen könnte.
Zur Zeit bin ich für unbestimmte Zeit in Urlaub und habe kei Iternet. Schau nur mal ab und zu i s Forum rein.