folgende Beispieltabellen (Tabellen haben gleiche Struktur und gehen bis Spalte BP - ich habe hier nur einen Ausschnitt):
Zieltabelle (Sammeltabelle):
Workflow_GSZ_2011
A | B | C | D | E | F | G | H | I | J | K | L | |
1 | Zähler | GSZ-Ketten Nr | GSZ Name | ViFlow | Status_Masterliste | Aktivierungsdatum (JJJJMMTT) | Land | Ersteller | Deaktivierungsdatum | Bemerkungen | AT (1 = AT getestet) | Relevant für FI (0 = nein, 1 = ja) |
2 | x | GSZ_0000_K000 | DE_Standardauftrag WE bei RG-Prüfung vorhanden_V1_mvi | DE | mvi | 1 | ||||||
3 | x | GSZ_0000_K001 | DE_Standardauftrag WE nach RG-Eingang_V1_mvi | DE | mvi | 1 | ||||||
4 | x | GSZ_0006_K005 | DE_Lagerübergreifende Aufträge_V1_jmo | DE | jmo | 1 | ||||||
5 | x | GSZ_0022_K001 | DE_Auftrag mit Minuserlös_V1_ada | DE | ada | 1 | ||||||
6 | x | GSZ_0022_K002 | DE_Minuserlös bei Auftragseingabe_V1_ada | DE | ada | 1 | ||||||
7 | x | GSZ_0028_K001 | DE_mehrere Aufträge in einer Lieferung_V1_ada | DE | ada | 1 | ||||||
8 | x | GSZ_0028_K002 | DE_Auftrag mit Einteilung_V1_ada | DE | ada | 1 | ||||||
9 | x | GSZ_0029_K001 | DE_Auftragsstorno_V1_rhs | DE | rhs | 1 | ||||||
10 | x | GSZ_0029_K002 | DE_Auftragsstorno Rückstände_V1_ada | DE | ada | 0 | ||||||
11 | x | GSZ_0029_K003 | DE_Auftragsstorno bei vorhandenen Folgebelegen_V1_rgn | DE | rgn | 1 | ||||||
12 | x | GSZ_0030_K004 | DE_Überzählige_Ware_einbuchen_V1_rgn | DE | rgn | 1 | ||||||
13 | x | GSZ_0030_K005 | DE_Überzählige_Ware_Reklamation_NL_V1_sst | DE | sst | 0 | ||||||
14 | x | GSZ_0030_K006 | DE_Überzählige_Ware_Reklamation_Gutschrift_V1_sst | DE | sst | 1 | ||||||
15 | x | GSZ_0030_K008 | DE_Mitarbeitbarverkauf_V1_ada | DE | ada | 1 | ||||||
16 | x | GSZ_0030_K009 | DE_Mitarbeitbarverkauf_V1_ada | DE | ada | 1 | ||||||
17 | x | GSZ_0049_K003 | DE_Reklamation_m._ÜZ_Lagerplatz_m._NL_V1_ada | DE | ada | 1 | ||||||
18 | x | GSZ_0049_K004 | DE_Reklamation_m._ÜZ_Lagerplatz_o._NL_V1_sst | DE | sst | 1 | ||||||
19 | x | GSZ_0049_K005 | DE_Reklamation_o._ÜZ_m._NL_V1_sst | DE | sst | 1 | ||||||
20 | x | GSZ_0049_K006 | BE_Rack Jobbing_V1_rhs | BE | rhs | 1 | ||||||
21 | x | GSZ_0049_K007 | DE_Rack Jobbing_V1_rhs | DE | rhs | 1 | ||||||
22 | x | GSZ_0087_K002 | IT_Rack Jobbing_V1_rhs | IT | rhs | 1 | ||||||
23 | x | GSZ_0087_K002 | NL_Rack Jobbing_V1_rhs | NL | rhs | 1 | ||||||
24 | x | GSZ_0087_K003 | DE_Rack Jobbing_V1_rhs | DE | rhs | 1 | ||||||
25 | x | GSZ_0049_K003 | BE_Standardauftrag für Mitarbeiter_V1_lka | BE | lka | 1 | ||||||
26 | x | GSZ_0049_K005 | DE_Eigenverbrauch für EP.Abteilungen-V1_rhs | DE | rhs | 1 | ||||||
27 | x | GSZ_0152_K001 | DE_Standardauftrag MediMax_ohne Organschaft_V1_mre | DE | mre | 1 | ||||||
28 | x | GSZ_0152_K002 | DE_Standardauftrga MediMax mit Organschaft_V1_mre | DE | mre | 1 | ||||||
29 | x | GSZ_0049_K004 | DE_Standardauftrag für Mitarbeiter_V1_mvi | DE | mvi | 1 | ||||||
30 | x | GSZ_0018_K006 | DE_Auftrag für ein Mitglied_ aufgrund virtuelles Lager_V1_mvi | DE | mvi | 1 | ||||||
31 | x | GSZ_0018_K007 | DE_Auftrag_für_ein_Mitglied_Barzahler_aufgrund_virtuelles_Lager_V1_mvi | DE | mvi | 1 | ||||||
32 | x | GSZ_0414_K001 | DE_Blitzauftrag_unpassende_Aktualität_V1_mso | DE | mso | 1 | ||||||
33 | x | GSZ_0414_K004 | IN_Blitzauftrag_internationaler_Artikel_Mindererlös_unterschritten_V1_mso | IN | mso | 1 | ||||||
34 | x | GSZ_0414_K005 | DE_Blitzauftrag_Aktionsartikel_Mindestabnahmemenge_unterschritten_V1_mvi | DE | mvi | 1 |
Tabellendarstellung in Foren Version 5.39
Quelltabelle (mehrere Tabellen mit einzelnen Themen):
Workflow_GSZ_Aktionen
A | B | C | D | E | F | G | H | I | J | K | L | |
1 | Zähler | GSZ-Ketten Nr | GSZ Name | ViFlow | Status_Masterliste | Aktivierungsdatum (JJJJMMTT) | Land | Ersteller | Deaktivierungsdatum | Bemerkungen | AT (1 = AT getestet) | Relevant für FI (0 = nein, 1 = ja) |
2 | x | GSZ_0000_K001 | DE_Standardauftrag WE nach RG-Eingang_V1_mvi | DE | mvi | 1 | ||||||
3 | x | GSZ_0000_K001 | BE_Standardauftrag WE nach RG-Eingang_V1_mvi | DE | mvi | 1 | ||||||
4 | x | GSZ_0003_K002 | DE_Alternativartikel und mehrere Bestellpositionen_V1_ada | DE | ada | 1 | ||||||
5 | x | GSZ_0003_K003 | AT_Ersatzartikel und mehrere Bestellpositionen_V1_ada | DE | ada | 1 | ||||||
6 | x | GSZ_0003_K003 | NL_Ersatzartikel und mehrere Bestellpositionen_V1_ada | DE | she | 1 | ||||||
7 | x | GSZ_0003_K005 | DE_Ersatzartikel mit einer Bestellposition_V1_ada | DE | ada | 1 | ||||||
8 | x | GSZ_0003_K006 | DE_Natural und Crossselling im EK_V1_rgn | DE | rgn | 1 |
Tabellendarstellung in Foren Version 5.39
dazu habe ich folgenden Code in der Quelltabelle:
Private Sub CommandButton1_Click()
Dim wksQuelle As Worksheet
Dim rngRow As Range, rngSelektion As Range
Dim wbSammler As Workbook, wksSammler As Worksheet, rngZelle As Range
Dim vKey As Variant, lZeile As Long
'Spalte mit eindeutgem Schlüssel = Spalte B
Const SpalteKey As Long = 2
'Dateiname der Sammeldatei - anpassen !
Const sNameSammler As String = "\\\\Malibu\Projekte\SAP\300_Test\2011\110_Verwaltung\ _
20_Auswertungen\Workflow_GSZ_2011.xlsm"
'Blattname oder Nr des Tabellenblatts in Sammeldatei - ggf. anpassen !
Const vBlattSammler = 1
On Error GoTo Fehler
'Quellblatt und Zell-Selektion Objekt-Variablen zuweisen
Set wksQuelle = ActiveSheet
Set rngSelektion = Selection
'1. Zeile des selektierten Bereichs prüfen
If rngSelektion.Row Sammeldatei") = vbNo Then GoTo Beenden
'Bildschirmaktualisierung und Ereignismakros deaktivieren
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Sammeldatei öffnen
Set wbSammler = Workbooks.Open(Filename:=sNameSammler, Ignorereadonlyrecommended:=True)
Set wksSammler = wbSammler.Worksheets(vBlattSammler)
'Keys der Selektion in Sammeldatei suchen und Zeilen kopieren
For Each rngRow In rngSelektion.Rows
vKey = wksQuelle.Cells(rngRow.Row, SpalteKey).Value
Set rngZelle = wksSammler.Columns(SpalteKey).Find(What:=vKey, LookIn:=xlValues, _
lookat:=xlWhole)
With wksSammler
If rngZelle Is Nothing Then
'Neuer Schlüssel
lZeile = .Cells(.Rows.Count, SpalteKey).End(xlUp).Row + 1
Else
'vorhandener Schlüssel
lZeile = rngZelle.Row
End If
End With
wksQuelle.Rows(rngRow.Row).Copy Destination:=wksSammler.Rows(lZeile)
Next
wbSammler.Close savechanges:=True
Beenden:
Fehler:
With Err
Select Case .Number
Case 0 'alles ok
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Der Code leistet folgendes:
Von der Quelltabelle (die dynamisch also fortwährend befüllt wird) werden Zeilen in die Zieltabelle kopiert und zwar folgendermaßen:
In der Zieltabelle werden die zu kopierenden Zeilen markiert. Danach wird auf einen Button geklickt. Jetzt wird
1. die Zieltabelle im Hintergrund geöffnet
2. geprüft, ob Daten in Spalte B ("GSZ-Name") schon vorhanden sind
3. Zeile wird in Zieltabelle übertragen, falls Daten in Spalte B noch nicht vorhanden;
Zeile wird in Zieltabelle nicht übertragen, falls Daten in Spalte B schon vorhanden bzw. Zeile wird
dann überschrieben (sodaß in Spalte B keine doppelten Einträge vorhanden sind)
4. Zieltabelle wird im Hintergrund gespeichert und geschlossen
Soweit funktioniert der Code auch. Jetzt ist aber folgendes Problem:
Tabelle1
A | B | C | |
1 | Zähler | GSZ-Ketten Nr | GSZ Name |
2 | x | GSZ_0000_K001 | DE_Standardauftrag WE nach RG-Eingang_V1_mvi |
3 | x | GSZ_0000_K001 | BE_Standardauftrag WE nach RG-Eingang_V1_mvi |
4 | x | GSZ_0003_K002 | DE_Alternativartikel und mehrere Bestellpositionen_V1_ada |
5 | x | GSZ_0003_K003 | AT_Ersatzartikel und mehrere Bestellpositionen_V1_ada |
Tabellendarstellung in Foren Version 5.39
Kriterium für doppelte sollte nicht nur die Spalte B ("GSZ-Ketten Nr") sein, sondern auch die ersten beiden
Zeichen (Länderkennzeichen) der Spalte C ("GSZ-Name"). Z. Bsp. sind oben die Einträge in Zeile 2 und 3 keine Duplikate, da die Länderkennzeichen unterschiedlich sind ("DE" und "BE"). D. h. es müßte zusätzlich zur Überprüfung, ob identische Daten in Spalte B stehen noch überprüft werden, ob, wenn dieses der Fall ist auch die ersten beiden Zeichen in Spalte C identisch sind.
Kann man vorstehenden Quellcode entsprechend ändern?
Ich hoffe ich habe das Problem verständlich geschildert.
Viele Grüße
Stefan