VBA - 2 Werte Suchen und Wert 3 ausgeben

Bild

Betrifft: VBA - 2 Werte Suchen und Wert 3 ausgeben
von: Benji
Geschrieben am: 29.07.2015 14:11:59

Hallo zusammen,
ja ich benötige Hilfe... :-)
Ich habe in Mappe1 folgende Werte:


Plan	      Position   Benennung
99713203	100	
99213564	200	
99713203	100	
		
		
99713203	100	
99713203	200	
99713203	300	

In Mappe 2 stehen dieselben Werte, mit zusätzlichen Spalten, die ich gerne in Mappe 1 hätte. ( _
Mappe 1 enthält normal Werte die nicht in Mappe 2 stehen)

99713203	100	Hund
99713203	200	Katze 
99713203	300	Maus
99713206	200	Hase
99723156	100	Laus
99713203	100	Hund2
99713203	100	Hund3

Ich hätte jetzt gern in Mappe 1 die Bennennung bei gleicher Plannummer und Positionsnummer aus _
Mappe 2. Im Excel habe ich das mit Index und Vergleich lösen können. Allerdings treten manche _ Plannummer und Positionsnummer doppelt auf, diese würde ich gerne in eine neue Zeile schreiben:

Plan	Position	Benennung
99713203	100	Hund
		        Hund1
		        Hund2
99213564	200	
		
99713203	300	Maus
99713203	200	Katze

Es wäre nett wenn sich das mal jemand anschaut,
https://www.herber.de/bbs/user/99150.xlsx
Evtl. ist dies garnicht mit VBA möglich ?
DANKE !

Bild

Betrifft: Ist möglich...
von: Frank
Geschrieben am: 31.07.2015 13:13:46
Hallo,
das geht schon. Ich gehe in meinen Beispielen davon aus, dass in beiden Mappen nur das erste Blatt verwendet wird (da Du ja nur eine Mappe hochgeladen hast).
(1) Letzte Zeile in Mappe 2


lZM2=Workbooks("Mappe2.xls).Sheets(1).Range("A10000").end(xlup)

(2) Plan, Position und Benennung der ersten (Daten-)Zeile Variablen zuweisen
z.B.

PlQ=Workbooks("Mappe2.xls).Sheets(1).cells(2,1).value
         PosQ=Workbooks("Mappe2.xls).Sheets(1).cells(2,2).value
         BenQ=Workbooks("Mappe2.xls).Sheets(1).cells(2,3).value

(3) Letzte Zeile in Mappe 1 feststellen (s.o.)
(4) Plan und Position der ersten (Daten-)Zeile in Mappe 1Variablen zuweisen (s.o.)
(5) Vergeichen, ob beide identisch

if PlQ=PlZ and PosQ=PosZ then

(6) wenn ja, Benennung vergleichen
(7) ist die leer, dann eintragen

Workbooks("Mappe1.xls).Sheets(1).cells(3,3).value=BenQ

(8) sonst darunter schauen, ob in Spalte 1 eine Plannummer steht

if not isempty(Workbooks("Mappe1.xls).Sheets(1).cells(3,1).value)="" then

(9) wenn ja nächsten Eintrag aus Mappe 2 nehmen
(10) wenn nein, alle Zeilen bis zur nächsten Plannummer prüfen, ob diese Benennung schon vorkommt
(11) wenn ja nächsten Eintrag aus Mappe 2 nehmen
(12) wenn nein, Zeile einfügen, Benennung eintragen

Workbooks("Mappe1.xls).Sheets(1).cells(x,1).Insert Shift:=xlDown
     Workbooks("Mappe1.xls).Sheets(1).cells(x,3).value=BenQ

(13) Für alle Zeilen von Mappe 2 wiederholen
Grüsse,
Frank

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA - 2 Werte Suchen und Wert 3 ausgeben"