Kopieren in Bezug zum aktuellsten Datum in einem Bereich
#1
Hallo,

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.

Beste Guresse
Bamane


Angehängte Dateien
.xlsx   Search by latest date in range.xlsx (Größe: 10,27 KB / Downloads: 8)
Top
#2
Hola,

in D2 (mit Strg-Shift-Enter abschließen):


Code:
=MAX(WENN((Sheet2!$A$2:$A$36=A2)*(Sheet2!$B$2:$B$36=B2);Sheet2!$C$2:$C$36))

In C2:


Code:
=VERWEIS(2;1/(Sheet2!$A$2:$A$36&Sheet2!$B$2:$B$36&Sheet2!$C$2:$C$36=A2&B2&D2);Sheet2!$D$2:$D$36)

Gruß,
steve1da
[-] Folgende(r) 1 Nutzer sagt Danke an steve1da für diesen Beitrag:
  • Bamane
Top
#3
Hi Steve,

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.

Beste Gruesse
Bamane
Top
#4
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:
  • Bamane
Top
#5
Hi Elex, 

vielen Dank für diene Hilfe. Der Code funktioniert super und ist auch sehr schnell!

Beste Grüsse
Bamane
Top
#6
(14.05.2018, 23:04)Elex schrieb: 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

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
Top
#7
Hi

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.

Gruß Elex
Top
#8
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. 


Gruss 
Bamane
Top
#9
Hi
Code:
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:
  • Bamane
Top
#10
Hi Elex,


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?

Gruss
Bamane
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste