Tabellen Vergleichen und ersetzen
#1
Ich habe mal ein kleines Problem ...

Es gibt eine Datei1 mit einer Tabelle1.
Da sind in Spalte 1 Artikel drin. In einer Spalte C steht drin ob es ein "Verschleißteil" oder ein
"Ersatzteil" oder keines "n/a" ist. Oder die Zelle ist noch frei.
Die Tabelle enthält alle Teile der Maschine nach Baugruppen, Untergruppen usw. Deshalb ist sie sehr lang.
Teilweise 40.000 - 50.000 Zeilen. Und viele Teile (z.B. Schraube M8x40) tauchen zig mal auf, da sie in vielen
Bauteilen verbaut sind. Allen Teilen soll jetzt zugewiesen werden ob sie "Verschleißteil", "Ersatzteil"
oder "n/a" sind.

Eine wirklich aufwendige Arbeit, die wir aber schon an einigen Maschinen gemacht haben.

Es gibt also eine Datei2 mit einer Tabelle, ich nenne sie auch mal Tabelle2, die schon fertig ist.

Jetzt ist meine Idee:
Gehe in Tabelle1 nimm die erste Artikelnummer, klappere die Tabelle2 ab, wenn es den Artikel gibt,
füll das Feld "Verschleiß, Ersatz..." entsprechend aus (wenn noch nichts drin steht)
Nimm das nächste Teil aus Tabelle1 und schau wieder in Tabelle2 ob es das gibt usw.

Das ist natürlich viel Aufwand, weil viele Teile mehrfach geprüft wird, aber sollte programmtechnisch
die einfachste Version sein.

Habe aber keinen Ansatz...
Kann mir jemand einen Tipp geben ?

Geht das mit einer Formel (wäre mir das liebste) oder Makro oder VBA ?

Danke!


Angehängte Dateien
.xls   Tabelle1.xls (Größe: 473,5 KB / Downloads: 9)
.xlsx   Tabelle2.xlsx (Größe: 471,61 KB / Downloads: 9)
Antworten Top
#2
Hola,
in einer Hilfsspalte:
Code:
=WENN(C2="";WENNFEHLER(SVERWEIS(A2;[Tabelle2.xlsx]Tabelle2!$A$2:$C$50000;3;0);"");C2)
Danach die Daten kopieren und als Werte ab C2 einfügen.
Gruß,
steve1da
Antworten Top
#3
Super! Thumps_up Und so schnell!
Vielen Dank!

Gut ist auch, daß die Spalten nebeneinander gleich zeigen, welche Zeilen noch offen sind (weil leer) und bearbeitet werden müssen.

Jetzt kann ich die auszufüllende Datei mit verschiedenen fertigen Dateien abgleichen. 
Die folgende Idee ist eine eigene Datei aufzubauen, wo alle Teile die wir haben einfach reingeschrieben werden, die ab und zu gefüttert wird. Und dann neue Projekte nur noch mit dieser Datei abgeglichen werden.

Das probiere ich jetzt erst mal selber. 

DAAANKE!
Antworten Top
#4
Hat alles soweit super geklappt (auch dank des Forums !) und die Referenztabelle (mit allen Teilen über alle Maschinen) funktioniert auch und kann einfach mit neuen Maschinen ergänzt werden, alle Dupletten werden rausgefiltert. Hätte nie gedacht, daß Excel solange rechnen kann  31  Aber ok, tausende Zeilen löschen und alle Formeln und Bezüge neu anpassen, dauert eben.

aber jetzt habe ich doch eine kleine Frage ...

Ich berechne in einer Zelle G2 die letzte Zeile der Tabelle mit =ANZAHL2(A:A) sagen wir 12345
Jetzt möchte ich in einer anderen Zelle ein Array beschreiben, derzeit von A2:A50000.
Ziehe ich die Formel in der Spalte nach unten lande ich z.B. bei A5000:A54998. Das ist auch korrekt und funktioniert.
Die Tabelle verlängert sich aber stetig und damit auch die letzte Zeile, die ich aber ja in G2 habe.
Wie muß ich das Array formatieren, daß es im Prinzip so aussieht (funktioniert aber leider nicht):  A2:A($G$2)  also A2:A12345
Und wenn ich es runterziehe zu A5000:A12345.   
Habe alles mögliche probiert... Meist ist der Fehler dann #NAME?

Danke !
Thomas
Antworten Top
#5
Code:
A2:INDEX(A:A;G2)
Antworten Top
#6
Danke! 
Werde ich ausprobieren.

Mit Index hatte ich auch rumprobiert, aber irgendwie hatte es auch nicht so richtig funktioniert, oder ich war zu blöd.

Thomas
Antworten Top
#7
Code:
Sub M_snb()
  sn = Workbooks("Tabelle2.xlsx").Sheets(1).Cells(1).CurrentRegion
  sp = Workbooks("Tabelle1.xls").Sheets(1).Cells(1).CurrentRegion
 
  With CreateObject("scripting.dictionary")
    For j = 2 To UBound(sn)
        .Item(sn(j, 1)) = sn(j, 3)
    Next
 
    For j = 2 To UBound(sp)
      sp(j, 3) = .Item(sn(j, 1))
    Next
  End With
 
  Workbooks("Tabelle1.xls").Sheets(1).Cells(1).CurrentRegion = sp
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#8
Hallo

da waren die Kollegen offenbar mit ihren formellösungen schneller.  Hier mal ein Makro Lösung.
Das makro läuft aber nur, wenn man die Tabelle2 in dieses Beispiel kopiert. Die habe ich gelöscht!
Beide zusammen waren zum hochladen zu gross.

Der Vorteil ist, man kann bei mir in Zelle D1 einen Teiltext eingeben, nach dem gefiltert wird.
z.B. "Haube" oder "Haube 1", dann bekommt man nur die Hauben gefiltert.

Wenn du noch weitere Dateien mit Maschinen hast könnte man die auch ins Beispiel kopieren.
Ich habe nur vergessen für das makro einen Button einzufügen.

mfg Gast 123


Angehängte Dateien
.xls   Tabelle Lagerliste.xls (Größe: 633 KB / Downloads: 0)
Antworten Top
#9
Vielen Dank für die Hilfe hier!
Um die Referenzdatei aufzubauen, habe ich noch ein kleines Problem, das jetzt erst aufgetaucht ist, weil unsere Datenbank von der ich die Listen bekomme nicht konsistent ist. Der Plan war, die neu einzufügende Liste einfach an die Referenz hinten dranzuhängen. Dann schauen, ob es das Teil oben schon gibt und zu klassifizieren. Dazu bekommen die gleichen Teile einen Zähler in einer extra Spalte (der oben in der Tab z.B. 10 ist und beim letzten auftauchen dann 1. Dann gibt es eine andere Spalte, wo ich für alle Zeilen, wo dieser Zähler nicht 1 ist, "doppelt" reinschreibe. Dann filtere ich die Tabelle nach "doppelt", und lösche alle diese Zeilen. Erledigt! (s. Screenshot) Da bei doppelten Teilen aber die 1 ganz unten steht, lösche ich mit diesem Verfahren die Zeile oben in der Tabelle. Wenn alles konsistent wäre, wäre das kein Problem. Es ist aber nicht konsistent, und ich versaue mir die richtigen Daten oben.

Jetzt gibt es (denke ich) zwei Möglichkeiten:
1. Die Tabelle von unten nach oben suchen lassen
oder 
2. Oder das "doppelt" bei dem höchsten Zähler für das Teil wegzulassen und dafür bei 1 wieder einzutragen (wo es jetzt ja fehlt).
Das Problem dabei: Teile die es nur einmal gibt dürfen kein "doppelt" bekommen, sondern eben nur solche, die mehrfach auftreten.

Und an der Stelle weiß ich leider nicht weiter.
Vielleicht kann mir jemand von Euch einen Denkanstoß geben.


Danke!
Thomas


Angehängte Dateien Thumbnail(s)
   

.xlsx   RefV2_spielen.xlsx (Größe: 16,02 KB / Downloads: 4)
Antworten Top
#10
Ich habe das Problem gelöst, indem ich die einzufügende Tabelle nicht hinten anhänge, sondern oben einfüge.
Wenn man weiß, wie man 15000 Leerzeilen einfügt, ist es ganz einfach und das Problem ist umgehend gelöst.
Das mit den Leerzeilen habe ich gefunden ...

Thomas
Antworten Top


Gehe zu:


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