Autor
|
Thema: Abgleichen von 2 Tabellen (4480 mal gelesen)
|
OliverK Mitglied Energieelektroniker
Beiträge: 65 Registriert: 03.08.2008
|
erstellt am: 04. Jan. 2010 15:58 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe da ein kleines Problem ich hoffe ihr könnt mir dabei Helfen da ich mich mit VB nicht aus kenne. Ich habe die tolle aufgabe bekommen in excel zu realisieren einen abgleich zwischen zwei tabellen. Es soll also aus der tabelle 2 die daten in tabelle 1 übertragen werden bzw auch überschrieben werden. Tabelle1 ist folgt aufgebaut: A1:Artikelnummer B1:Typbezeichnung C1:Beschreibung D1:Bestellnummer E1:VK Tabele2 ist wie folgt aufgebaut: A1:Bestellnummer B1:Beschreibung C1:Hersteller D1:Artikelnummer E1:VK In TB1 soll die Sp A erhalten bleiben die darf weder überschrieben noch ersetzt werden der vergleich soll zwischen TB1 Sp.B und TB2 SP. C überprüft werden und die fehlende sachen oder nich identische sachen ersetzt werden Also TB1 Sp. A soll nicht geändert werden TB1 Sp.B soll mit TB2 SP.D überprüft werden TB1 SP.C soll mit TB2 SP.B Überschrieben werden wo bei aber die kürzel in der TB1 de_DE@ sollten bestehen bleiben. TB1 SP.D soll mit TB2 Sp.A Überschrieben werden TB1 Sp.E soll mit TB2 SP.E überschrieben werden Ich hoffe ich habe mich verständlich aus gedrückt was ich gerne hätte.beim Download die endung txt entfernen um die Datei zu öffnen MfG Oliver [Diese Nachricht wurde von OliverK am 04. Jan. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 04. Jan. 2010 21:43 <-- editieren / zitieren --> Unities abgeben: Nur für OliverK
N'Abend, etwas verständlicher wurde es durch die xls. Ich weiß nur nicht, ob Tab1 und Tab2 und auch die Spaltenangaben immer so stimmen, ich hab mich da mal nach Angaben gerichtet. bislang schreit es noch nicht nach Makro, bislang geht's noch mit Formel. Beachte die $ und die Sortierpflicht bei der Arbeit mit VERWEIS. Ich würde also Hilfsspalten erzeugen und es so erledigen: >> Also TB1 Sp. A soll nicht geändert werden OK, also passiert alles in Tab1, nur Spalte A ist unantastbar, alle anderen dürfen verändert werden? >> TB1 Sp.B soll mit TB2 SP.D überprüft werden
=VERWEIS(B3;Tab2!$D$2:$D$1718) , Formel runterkopieren Tab2 muß nach D sortiert sein >> TB1 SP.C soll mit TB2 SP.B Überschrieben werden wo bei aber die kürzel in der TB1 de_DE@ sollten bestehen bleiben. Welche Kürzel? da ist nix kurzes. Den gesamten Wert erhälst Du, indem Du ihn vorher ausliest und der Formel voran stellst. Formel, die nur das erste "de_DE@" erhält: =LINKS(C3;FINDEN("@";C3))&VERWEIS(B3;Tab2!$D$2:$D$1718;Tab2!$B$2:$B$1718) >> TB1 SP.D soll mit TB2 Sp.A Überschrieben werden >> TB1 Sp.E soll mit TB2 SP.E überschrieben werden Sollte jetzt kein Problem mehr sein, Formel ist dieselbe, nur andere Bezüge. Oder befürchte ich richtig, dass der Import öfter stattfindet und Du keine Lust auf Sortieren und/oder Hilfsspaltenlösung hast? VBA-Lösungen zu Tabellenvergleichen solltest Du im Forum finden. HIER mal ein Ansatz, schreibt das resultierende array erst einmal in Tab1, Spalte J-N, das Ergebnis solltest Du auf jeden Fall prüfen, das wird noch nicht dem entsprechen, was Du gerne hättest, aber ein Ansatz ist ja jetzt da und kann von Dir nach Herzenslust umgefummelt werden. Forensuche und google kennen viele Tipps zum Einstieg ins VBA. Fang einfach mal an und dann schauen wir mal, PS: Dein Projekt ist eher bei C als bei A angefangen mit dem Alphabet, aber I-Dötzchen heißen so, weil auch sie nicht bei A anfangen, wer weiß, vielleicht klappt's ja
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OliverK Mitglied Energieelektroniker
Beiträge: 65 Registriert: 03.08.2008
|
erstellt am: 05. Jan. 2010 09:33 <-- editieren / zitieren --> Unities abgeben:
Danke erst mal für die schnelle Hilfe, vielleicht habe ich mich etwas missverständlich aus gedrückt, die tabellen werden so aus dem programm ausgeben die werden sich also nicht ändern. ich habe mal anbei in screenshot gemacht und darin noch mal ein paar sachen eingezeichnet um es verständlicher zu machen.Beschreibung folg Excel tab. hängt auch als Datei dabei zum testen ob es funzt am ende. Also im Bild Test2.jpg hätte ich gerne eine formel oder makro wo in tab1 die SpA Nr5 nicht verändert wird, desweiteren soll SpD von Tab2 mit der SpB von Tab1 Nr2 verglichen werden und wenn über einstimmungen sind sollen die werte von Tab2 Nr1 Nr3 und Nr4 in Tab1 eingetragen werden wenn es geht sollte aber in Tab1 SpC das de_DE@ bestehen bleiben. Ich hoffe das dies verständlicher ist als mein erster versuch. Und wie schon geschrieben die Tabellen bleiben so die ändern sich nicht bei einer auswertung und schonmal mit besten Dank im Voraus. Mfg
Oliver Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 05. Jan. 2010 10:25 <-- editieren / zitieren --> Unities abgeben: Nur für OliverK
|
OliverK Mitglied Energieelektroniker
Beiträge: 65 Registriert: 03.08.2008
|
erstellt am: 05. Jan. 2010 11:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, wohl eher dann am Verständniss wie ich diese formel einbinde da bei mir nur dann erscheint #NV und dies bei jeder auch bei denen die ich umschreibe scheine da irgendwie was falsch zu machen wäre nett wenn du diese formel in die vorhandene excel tab. einbinden könntest und dies wieder hier einstellen. Bedanke mich schonmal für eure mühen im Voraus. Mfg Oliver Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 05. Jan. 2010 21:22 <-- editieren / zitieren --> Unities abgeben: Nur für OliverK
N'Abend, Die wichtigsten Punkte noch einmal zusammengefaßt:
- Mach es in Hilfsspalten auf Tab1 (bsp. in Spalten G-K)
- Sortier Tab2 nach Spalte D
- in G3 mal zum Testen die Formel: =VERWEIS(B3;Tab2!$D$2:$D$1718;Tab2!$B$2:$B$1718) eintragen
- runterkopieren und verstehen. Der Rest geht dann ganz von alleine...
Beachte, dass es nur 120 Übereinstimmungen gibt, überprüf also die Ergebnisse! Das Makro mußt Du nur per copy&paste z.B. in ein Modul eintragen. Auch hier: überprüf die Ergebnisse. Wenn Du weiterhin Probleme hast, lad ne Mappe hoch, in der Du die (geänderte) Formel drin hast und mach dort kenntlich, was Du wo anders erwarten würdest. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OliverK Mitglied Energieelektroniker
Beiträge: 65 Registriert: 03.08.2008
|
erstellt am: 06. Jan. 2010 09:14 <-- editieren / zitieren --> Unities abgeben:
Erst einmal danke für die schnelle Hilfe, da besteht nur noch ein problem die Tabelle sieht so weit in Ordnung aus.Aber ein kleines Problem besteht darin das er aus der Bestellnummer 100.000 von Tab2 dies als 100000 in Tab1 einträgt da ich mich auf dem Gebiet der makro erstellung nicht wirklich auskenne bräuchte ich noch mal hilfe wo ich was ändern muss, damit er mir die Zahl so wie in Tab1 auch in Tab2 einträgt. Dann noch eine frage ist es auch möglich mit dem Makro nach spalte 1 doch zu vergleichen aber ohne dem Hersteller kürzel davor z.B. SIE. siehe Bild 2. Mfg Oliver Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 06. Jan. 2010 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für OliverK
Moin, >> Aber ein kleines Problem besteht darin das er aus der Bestellnummer 100.000 von Tab2 dies als 100000 in Tab1 einträgt... Das ist ne reine Formatierungsfrage. Formatier die Zellen von Hand als Zahl ohne Dezimalstellen und mit 1000-er Trennpunkt oder in VBA mit einem .NumberFormat = "#,##0" z.B. kannst Du einen ganzen Bereich so formatieren: Beispiel: Sheets("Tab1").Range("M1:M30").NumberFormat = "#,##0" >> ist es auch möglich mit dem Makro nach spalte 1 doch zu vergleichen aber ohne dem Hersteller kürzel davor z.B. SIE. siehe Bild 2 Ja, der Vergleich findet in der Zeile Code: If ar1(a, 2) = ar2(b, 4) Then
statt. ar1(a,2) = Tab1, Spalte B ar2(b,4) = Tab2, Spalte DDu möchtest jetzt Tab1, Spalte A [ > ar1(a,1) ] jedoch ohne das "SIE." [ > Right(ar1(a, 1), (Len(ar1(a, 1)) - 4)) ] und ohne die Leerzeichen, die ich in Tab1, SpalteA teilweise am Ende der Strings finde [ > Trim(Right(ar1(a, 1), (Len(ar1(a, 1)) - 4))) ] mit Tab2, Spalte D vergleichen: Code: If Trim(Right(ar1(a, 1), (Len(ar1(a, 1)) - 4))) = Trim(ar2(b, 4)) Then
Ich erwähnte ja schon, dass Du nicht bei A anfängst Versuch es trotzdem nachzuvollziehen: In der VBA-Hilfe sind alle verwendeten Funktionen erklärt. Schau Dir auch mal die Mid-Function an, an das "ohne SIE." kann man auch anders gelangen... Und so Sachen wie Find gäbe es auch noch, ich sagte ja: es ist ein Ansatz, und warum bin ich hier eigentlich der Alleinunterhalter? Alle anderen Helferlein schon wieder raus aus dem Urlaub? Setz Dir im Code mal ein paar Haltepunkte oder geh ihn gleich mit der F8 zeilenweise durch und schau im Menü > Ansicht > Lokal-Fenster, was alles passiert. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info | Excel -Suche | RuA-Suche | FAQ-ACAD | CAD.de-Hilfe | Sei eine Antilope Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
OliverK Mitglied Energieelektroniker
Beiträge: 65 Registriert: 03.08.2008
|
erstellt am: 06. Jan. 2010 14:45 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnelle Hilfe es klappt jetzt so wie es soll nach dem ich da noch ein bisschen rum experimentiert habe da ich ja überhaupt keine Ahnung habe von basic. Bedanke ich mich für eure bzw für deine Hilfe. Da die anderen wohl noch alle im Urlaub sind . noch eine andere frage gibt es denn irgendwo eine seite wo die Befehle beschrieben werden da ich mich doch mal Langsam damit ausseinander setzen sollte . Mfg Oliver Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 06. Jan. 2010 16:59 <-- editieren / zitieren --> Unities abgeben: Nur für OliverK
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|