Spalten vergleichen und Werte übernehmen

FloHoCH

Stammgast
Ich habe folgenden Thread gelesen: http://www.pctipp.ch/forum/showthread.php?t=1065&highlight=Excel+Spalten+vergleichen

Mein Wunsch ist eigentlich recht ähnlich ...

Ich habe ein Excel-File mit zwei Tabellenblätter
im ersten Tabellenblatt sind alle "Kisten" aufgelistet mit einer eindeutigen ID, im zweiten Tabellenblatt der "Inhalt der Kisten" mit der passenden Kisten ID. Nun möchte ich die "Beschreibung der Kiste" aus dem Tabellenblatt 1 ins Tabellenblatt2 übernehmen, dazu muss ich die Zeilen vergleichen.

So würde es theoretisch funktionieren:

=WENN(B6=T1!A2;T1!B2;"")& WENN(B6=T1!A3;T1!B3;"")& WENN(B6=T1!A37;T1!B37)

Leider sind es um die 50 Datensätze, die Formel würde also zu lange!

Gekürzt habe ich sie dann so:
=WENN(VERGLEICH(Inhalt!B6:B71;T1!A2:A37)=ZEILE();"";T1!B2:B37)

Aber das mit dem Einfügen (der letzte Teil) der passenden Infos funktioniert nicht!

Wie muss ich das anstellen? Brauche ich ein Makro?

PS: Das sind solche Themen, für welche es grosse Chancen auf die 100.-- gibt, deine Antwort könnte sich lohnen ;)
 
Zuletzt bearbeitet:

mj10

Mitglied
Hallo

Entweder habe ich nun etwas total missverstanden oder Du benötigst einen SVERWEIS.


=SVERWEIS(B6;Inhalt!A:A;2;0)

oder wenn Dich das #NV stört, dann:

=WENN(ISTFEHLER(SVERWEIS(B6;Inhalt!A:A;2;0));"";SVERWEIS(B6;Inhalt!A:A;2;0))
 

FloHoCH

Stammgast
Hab ich auch gedacht aber SVERWEIS hat mir immer die Fehlermeldung #BEZUG! gegeben. Hab es jetzt mit einem normalen Verweis gelöst:

=VERWEIS(B10;Kiste!A:A;Kiste!B:B)

Der Nachteil daran ist, dass das erste Tabellenblatt aufsteigens sortiert sein muss. Dies ist in meinem Fall nicht unbedingt gewährleistet ...

Die Variante mit #NV sollte in meinem Fall sowieso nie vorkomen, und das heraus zu filtern wäre dann auch wieder der einfachere Teil.
 

1724

Stammgast
Hallo FloHoCH

Ich löse dieses Problem jeweils mit einem Makro, auch wenn es vielleicht nicht gerade die schnellste Variante ist. Hauptsache ein bisschen mit VBA spielen...

Code:
Sub Abgleich()

Sheets("Tabelle2").Select
        Range("A2").Select
        Do While ActiveCell <> Empty
            Idnum = ActiveCell
            Inhalt = ActiveCell.Offset(0, 1)
            Sheets("Tabelle1").Select
            Range("B2:B10000").Select
                Selection.Replace What:=Idnum, Replacement:=Inhalt, LookAt:=xlWhole, _
                SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                ReplaceFormat:=False
                Sheets("Tabelle2").Select
        ActiveCell.Offset(1, 0).Select
        Loop
        
End Sub

Du müsstest zuerst die ID's auf Tabelle1 in Spalte B kopieren, diese Werte werden dann mit dem "Inhalt" aus Tabelle2 ersetzt, falls die entsprechende ID gefunden wird.

greez
1724
 

FloHoCH

Stammgast
Danke für das Makro-Beispiel. Es gibt da nur zwei Probleme

1) hadelt es sich um ein recht heikles Dokument, gut, das Problem könnte man mit Backup lösen

2) verstehe ich nicht viel von Makros/VBS, bin eher der Web-Programmierer

Also wäre es mir halt lieber, wenn es ohne ginge ;)
 

pfuschi

Stammgast
Hallo

Entweder habe ich nun etwas total missverstanden oder Du benötigst einen SVERWEIS.


=SVERWEIS(B6;Inhalt!A:A;2;0)

oder wenn Dich das #NV stört, dann:

=WENN(ISTFEHLER(SVERWEIS(B6;Inhalt!A:A;2;0));"";SVERWEIS(B6;Inhalt!A:A;2;0))

Die Matrix muss immer auch die Spalte beinhalten aus welcher der Wert zurückgegeben werden soll:

=SVERWEIS(B6;Inhalt!A:B;2;0)

Darin liegt zumindest die Ursache für den #Bezug Fehler!

Gruss pfuschi
 

mj10

Mitglied
Die Matrix muss immer auch die Spalte beinhalten aus welcher der Wert zurückgegeben werden soll:

=SVERWEIS(B6;Inhalt!A:B;2;0)

Darin liegt zumindest die Ursache für den #Bezug Fehler!

Gruss pfuschi

Das wird es sein. Sorry, ich nehme eigentlich an, dass (fast) jeder den SVERWEIS kennt, da man ihn schon in der kaufmännischen Berufsschule lernt. Im Zweifelsfalle den Formelassistent nutzen.

@Threadersteller
Und also äääääächz, "heikles" Dokument: Separat abspeichern und gut ist. Sandbox. ;)

Wenn Deine Originalbeschreibung des Problems wortwörtlich so ist wie beschrieben, ist SVERWEIS die simple Lösung. Ansonsten wäre eine Beispieldatei sinnvoll.
 

FloHoCH

Stammgast
Habs jetzt nochmals mit dem SVERWEIS versucht und sieheda, es geht :) Wahrscheinlich hatte ich tatsächlich die Matrix falsch danke ...
 
Oben