1.9k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

wer kann helfen ?

Ich habe eine Excel Datei mit ca. 5000 Artikel und den dazugehörigen Einkaufspreisen. Bisher hatte ich nur bei einem Händler bestellt, das wird jetzt anders. Insofern beabsichtige ich die Datei so zu verändern, das für jeden Großhändler 3 Spalten zur Verfügung stehen (Händler-ID; Händler-Artikelnummer; Händler-EK). Das ganze nun 5x (es sind 5 Großhändler). Der niedrigste EK wird dann für die Berechnung des Verkaufspreises herangezogen.

Bis hierhin relativ einfach.

Jetzt mein Problem. Händler A oder B korrigiert seine Preisliste und sendet uns eine neue Datei.

Frage 1: Wie kann ich die neuen EK's in meine Datei einlesen (ich denke es geht über die Zuordnung der Händler-ID und Händler-Artikelnummer), aber wie lautet die Formel ?

Frage 2: in der neuen EK-Liste des Händlers vorhandene neue Artikel werden natürlich nicht gefunden. Gibt es eine Formel die diese nicht gefundenen Artikel in der neuen EK-Liste des Händlers einfärbt ?

Ich freue mich über jede Zuschrift.

Danke, Jacky.

2 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Jacky,

ohne Beispieldatei wirst Du vergebens auf eine brauchbare Antwort warten.
Niemand sieht das was Du vorliegen hast und niemand ist in der Lage und willens anhand Deiner Schilderungen eine Testumgebung zu erstellen.

Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

eine variante
ausgehend das beide dateien geöffnet sind
import als 2 datei öffnen

bestehende daten wird der neue preis angenommen
neue daten werden hinzugefügt

gruss nighty

leichte anpassung in den ersteren zeilen

Option Base 1
Option Explicit
Sub Abgleich()
Dim AnzEingabe As Integer, SpaltenIndex As Integer
AnzEingabe = 3 'lieferanten anzahl
SpaltenIndex = 3 'spaltenindex
Dim ZielAnz As Long, QuellAnz As Long, ZeilenMerker As Long, SpAnz As Long
Dim SpSuche As Long, ZielSpaltenIndex As Long, QuellZeilen As Long, QuellSpZeile As Long
Dim ZielZeiger As Boolean
Workbooks(2).Worksheets(1).Activate
QuellAnz = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
ReDim Quell(QuellAnz, SpaltenIndex) As Variant
Quell() = Range(Cells(1, 1), Cells(QuellAnz, SpaltenIndex))
Workbooks(1).Worksheets(1).Activate
ZielAnz = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ZeilenMerker = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ReDim Ziel(ZielAnz + QuellAnz, AnzEingabe * SpaltenIndex) As Variant
Ziel() = Range(Cells(1, 1), Cells(ZielAnz + QuellAnz, AnzEingabe * SpaltenIndex))
For SpSuche = 1 To AnzEingabe * SpaltenIndex Step SpaltenIndex
If Ziel(1, SpSuche) = Quell(1, 1) Then ZielSpaltenIndex = SpSuche
Next SpSuche
SpAnz = ActiveSheet.Cells(Rows.Count, ZielSpaltenIndex).End(xlUp).Row
ZeilenMerker = ActiveSheet.Cells(Rows.Count, ZielSpaltenIndex).End(xlUp).Row
For QuellZeilen = 1 To QuellAnz
For QuellSpZeile = 1 To ZielAnz
If Quell(QuellZeilen, 1) = Ziel(QuellSpZeile, ZielSpaltenIndex) And Quell(QuellZeilen, 2) = Ziel(QuellSpZeile, ZielSpaltenIndex + 1) Then
ZielZeiger = True
Ziel(QuellSpZeile, ZielSpaltenIndex + 2) = Quell(QuellZeilen, 3)
Exit For
End If
Next QuellSpZeile
If ZielZeiger = False Then
SpAnz = SpAnz + 1
Ziel(SpAnz, ZielSpaltenIndex) = Quell(QuellZeilen, 1)
Ziel(SpAnz, ZielSpaltenIndex + 1) = Quell(QuellZeilen, 2)
Ziel(SpAnz, ZielSpaltenIndex + 2) = Quell(QuellZeilen, 3)
Else
ZielZeiger = False
End If
Next QuellZeilen
Range(Cells(1, 1), Cells(ZeilenMerker + QuellAnz, AnzEingabe * SpaltenIndex)).Resize(UBound(Ziel())) = Ziel()
End Sub
...