ich komme gerade nicht mehr weiter. Vielleicht kann mir hier einer weiterhelfen. Ich habe knapp 3000 Daten vor mir liegen, fuer die ich die Nettopreise ausgehend vom aktuellsten Datum benoetige. Dazu habe ich ein Beispiel in den Anhang hinzugefuegt.
In Tabelle 1 stehen die unterschiedlichen Nummern der Komponenten mit ihren jeweiligen Namen. Fuer jede Nummer soll auf Tabelle 2 der Nettopreis in bezug zum aktuellsten Datum und auch das aktuellste Datum gesucht und in Tabelle 1 in die dazugehoerige Zeile hinzugefuegt werden.
Ich habe leider das problem, dass die Komponentennummern mehrmals auf Tabelle 2 auftauchen und ich mit meinen VBA Kenntnissen nicht die einzelnen Bereiche auf das aktuellste Datum ueberpruefen lassen kann.
danke fuer deine Hilfe, jedoch muss ich das ganze mit VBA loesen, da stetig Aenderungen stattfinden und die anderen Kollegen nicht wissen wie man die Funktionen anpasst.
Die Daten werden aus verschiedenen Sheets in diese Form gebracht, wie auf dem Bild zu sehen. Von da aus waere es am besten einen weiteren Code hinzuzufuegen.
Sorry, dass ich die Umlaute nicht benutze, bin gerade in USA und habe eine englische tastatur.
14.05.2018, 23:04 (Dieser Beitrag wurde zuletzt bearbeitet: 14.05.2018, 23:07 von Elex.)
Hi
für die Vorgaben könnte der Code schon den Zwecke erfüllen.
Code:
Option Explicit Dim ArrEin As Variant Dim n, k As Long
Sub Liste() ArrEin = Sheets("Sheet2").Range("A1").CurrentRegion
k = 2 For n = 2 To UBound(ArrEin, 1) If ArrEin(n, 1) <> ArrEin(n - 1, 1) Then Cells(k, 1) = ArrEin(n, 1) Cells(k, 2) = ArrEin(n, 2) Cells(k, 4) = ArrEin(n, 3) Cells(k, 3) = ArrEin(n, 4) k = k + 1 End If Next n
End Sub
Gruß Elex
Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:1 Nutzer sagt Danke an Elex für diesen Beitrag 28 • Bamane
für die Vorgaben könnte der Code schon den Zwecke erfüllen.
Code:
Option Explicit Dim ArrEin As Variant Dim n, k As Long
Sub Liste() ArrEin = Sheets("Sheet2").Range("A1").CurrentRegion
k = 2 For n = 2 To UBound(ArrEin, 1) If ArrEin(n, 1) <> ArrEin(n - 1, 1) Then Cells(k, 1) = ArrEin(n, 1) Cells(k, 2) = ArrEin(n, 2) Cells(k, 4) = ArrEin(n, 3) Cells(k, 3) = ArrEin(n, 4) k = k + 1 End If Next n
End Sub
Gruß Elex
Hi Elex, mir ist gerade aufgefallen, dass von die Daten in den ausgewählten Spalten von Sheet 2 komplett in Sheet 1 hineinkopiert werden. Der Bezug zu dem jeweiligen Komponenten in Sheet 1 fehlt also nach Name und der Beschreibung. Die Komponenten tauchen in Sheet 1 jeweils ein Mal auf und in Sheet 2 mehrmals, jedoch mit Angabe mehrerer Daten wie Datum, Netto Preis, Name usw. Wie müsste ich den Code verändern, um diese Bedingungen zu berücksichtigen? Gruss Bamane
Da in deiner Bsp. Datei alle Daten in Tab1 und Tab2 vorkamen war kein abgleich nötig sondern nur die Kopie des aktuellsten Datums.
Wenn du in Tab1 nur Auszüge aus Tab2 benötigst mach ich das so. Meine Frage dazu wäre aber noch ob ich davon ausgehen kann, dass Tab2 immer so gefiltert ist wie im Bsp. und das aktuellste Datum für jede Component an erster Stelle steht, oder ob die Liste auch ungefiltert sein kann.
18.05.2018, 16:11 (Dieser Beitrag wurde zuletzt bearbeitet: 18.05.2018, 16:12 von Bamane.)
Hi Elex,
also die Liste wird jede Woche aus dem SAP System exportiert und dann in Sheet 2 ungefiltert hineinkopiert. Den Filter setze ich derzeit manuell ein und sortiere nach "Component" und aktuellstem "Deliv. Date".
Derzeit sind es über 4000 Daten und jede Komponente in Sheet 1 kommt mehrmals in Sheet 2 vor. Also dann wie du gesagt hast, die Auszüge aus Sheet 2.
Ich habe überlegt die Auswahl nach vier Bedingungen durchzuführen: 1. Gleiche Komponenten, 2. Gleiche Beschreibung, 3. Aktuellste Datum, 4. Wenn Preis Ungleich Null.
Public Sub Liste() Dim ArrTab1, ArrTab2, ArrMerk As Variant Dim n, i As Long Dim c As Range
ArrTab1 = Sheets("Sheet1").Range("A1").CurrentRegion ArrTab2 = Sheets("Sheet2").Range("A1").CurrentRegion i = UBound(ArrTab1, 1) ReDim ArrMerk(1 To i - 1)
With Sheets("Sheet2").Range("A1", Sheets("Sheet2").Range("A1").End(xlDown)) For n = 2 To i Set c = .Find(ArrTab1(n, 1), LookIn:=xlValues) If Not c Is Nothing Then ArrMerk(n - 1) = c.Row End If Next n End With
For n = 2 To i ArrTab1(n, 4) = ArrTab2(ArrMerk(n - 1), 3) ArrTab1(n, 3) = ArrTab2(ArrMerk(n - 1), 4) Next n Sheets("Sheet1").Range("A1").Resize(i, 4) = ArrTab1 End Sub
Der Code geht von C1.1.1 Name 1 C1.1.2 Name 1 aus.
Wenn auch das Vorkommen kann C1.1.1 Name 1 C1.1.1 Name 2 musst du dich noch mal melden
Gruß Elex
Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:1 Nutzer sagt Danke an Elex für diesen Beitrag 28 • Bamane
vielen Dank fuer deinen Code, der wieder einmal super funktioniert. Leider gibt es eine Kleinigkeit die nicht ganz erfuellt wird.
Der Code gibt nicht den Preis und das Datum bezogen auf dem aktuellsten Datum aus, sondern bezieht sich auf die erste Zeile der jeweiligen Komponente.
In Zeile 4 müsste "$39 und 12/22/2014" anstelle von "$69 und 12/10/2014" stehen.
Wäre es möglich mit "cDate" zu arbeiten und dann immer den jeweiligen Bereich bei gleichen Komponenten und Namen auf das aktuellste Datum und dazugehörige Werte zu durchsuchen?