Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Vergleichen von Tabellen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Vergleichen von Tabellen (954 mal gelesen)
OliverK
Mitglied
Energieelektroniker


Sehen Sie sich das Profil von OliverK an!   Senden Sie eine Private Message an OliverK  Schreiben Sie einen Gästebucheintrag für OliverK

Beiträge: 65
Registriert: 03.08.2008

EPLAN Electric P8
Professional
2.1.6.5473 &
2.2.5.6359 HF1
2.3.5.7352
2.6.3

erstellt am: 11. Jan. 2010 11:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Test.xls.txt


Test1.jpg

 
Hallo zusammen,

wiedermal ein weiteres problem da ich jetzt eine Tabelle habe engültige version keine änderungen mehr vorgesehen.Hier jetzt meine Frage im Bild Test gut zu sehen möchte ich gerne die Sp E(PCK) mit Sp F(parts.xml) vergleichen aber beim vergleichen von Sp.F(parts.xml) müsste das Firmen kürzel ignoriert werden um einen Vergleich hin zu bekommen. Desweiteren sollen dann die SP.H:I:U von (parts.xml)mit den Sp.A:B: D(PCK) gefühlt werden bzw. Überschrieben.was wohl bis hierhin für die experten leicht zu lösen ist aber in Sp.I von (parts.xml)sollte das ??_??@ durch das de_DE@ ersetzt werden bzw. wenn de_DE@ da steht bei behalten werde also das der text aus PCK "Leitung 3G1,5" in (parts.xml) Sp. I heist "de_DE@Leitung 3G1,5".

Anbei ist auch eine Tabelle wo man vielleicht das fertige Makro drin speichern könnte und die datei als Anhang wieder anhängen könnte, oder mir als PM zukommen lassen könnte.

Ich bedanke mich schon mal für die Unterstützung im voraus.

Habe hier mal ein Makro vielleicht könnt ihr mir dabei noch helfen er vergleicht zwar jetzt die Tabellen aber er trägt nichts an den Stellen ein.

Code:
Option Explicit 'Code von Rübe 

'1F prüft 2E wobei die Hersteller zeichen wegfallen
'1I = 2B, wobei "de_DE@" vorweg soll
'1H = 2A
'1U = 2D

Public Sub Vergleich()
Dim e%, h%, LZA%, LZA2%
Dim wks5 As Worksheet, wks8 As Worksheet
Dim ar5, ar8, ar9

Set wks5 = ThisWorkbook.Sheets("parts.xml")
wks5.Activate
LZA = wks5.Columns(1).Find("*", [A1], , , xlByRows, xlPrevious).Row
ar5 = wks5.Range(Cells(2, 1), Cells(LZA, 87))
'ar9 = wks5.Range(Cells(2, 1), Cells(LZA, 87))

Set wks8 = ThisWorkbook.Sheets("PCK")
wks8.Activate
LZA2 = wks8.Columns(1).Find("*", [A1], , , xlByRows, xlPrevious).Row
ar8 = wks8.Range(Cells(2, 1), Cells(LZA2, 5))

For e = LBound(ar5) To UBound(ar5)
    For h = LBound(ar8) To UBound(ar8)
    If Trim(Right(ar5(e, 6), (Len(ar5(e, 6)) - 5))) = Trim(ar8(h, 5)) Then
   
    '    If ar5(a, 2) = ar8(b, 4) Then
            'Debug.Print a & " a>>b " & b & " >> " & ar1(a, 1) & " >> " & ar2(b, 1) & " VK= " & ar2(b, 5)
            ar9(e, 8) = "de_DE@" & ar8(h, 2)
            ar9(e, 7) = ar8(h, 1)
            ar9(e, 21) = ar8(h, 4)
            h = UBound(ar8)
        End If
    Next h
Next e
Sheets("parts.xml").Activate
'Sheets("parts.xml").Range(Cells(2, 10), Cells(LZA, 14)) = ar9
End Sub


[THEDIT] dem Wunsch nach einer besseren Lesbarkeit wird doch gerne entsprochen ,) [THEEND]

Mfg Oliver

[Diese Nachricht wurde von OliverK am 12. Jan. 2010 editiert.]

[Diese Nachricht wurde von OliverK am 12. Jan. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

carsten-3m
Mitglied
Dipl.-Ing. Mbau (Produktmanagement, Patent- und Normwesen)


Sehen Sie sich das Profil von carsten-3m an!   Senden Sie eine Private Message an carsten-3m  Schreiben Sie einen Gästebucheintrag für carsten-3m

Beiträge: 950
Registriert: 08.05.2007

Excel 2010

erstellt am: 13. Jan. 2010 11:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für OliverK 10 Unities + Antwort hilfreich

Bevor Deine Anfrage zu weit abtrudelt...

Zitat:
Original erstellt von OliverK:
... er vergleicht zwar jetzt die Tabellen aber er trägt nichts an den Stellen ein. ...
In Deinem Makro ist lediglich eine Anweisung enthalten (vorletzte Zeile), die einer Zelle einen (berechneten bzw. ermittelten) Inhalt (Variable ar9) zuweisen könnte. Diese ist allerdings auskommentiert. Folglich wird auch nirgens etwas verändert. ar9 wird teils wie eine Matrix verwendet, teils wie eine einwertige Variable. Die unvollständige DIM-Anweisung dieser Variable hilft da auch nicht recht weiter.

Am Rande: Bitte Programmschnipsel zukünftig in [code ] Dein Makro [ /code] packen (Link Code links neben dem Editbereich klicken), dann lässt sichs leichter lesen 

------------------
Seit Pro/E Version 1 dabei, auwei...

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 13. Jan. 2010 11:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für OliverK 10 Unities + Antwort hilfreich

@carsten
Ist der veränderte code von Olivers erstem thread zu diesem Thema, daher (weil's meins ist und aus der Bezeichnung ar9) weiß ich, dass ar9 ein array ist 
Unvollständige DIM-Anweisung? As Variant is eh default -> das bisserl Sparen sei mir gegönnt 

Die obere Zeile ('ar9 = wks5.Range(Cells(2, 1), Cells(LZA, 87)) ) hat er übrigens ebenfalls auskommentiert ;-)

Dieses zweite array hatte ich damals aus folgendem Grund drin:
Es gibt nicht zu jedem Wert einen passenden Gegenwert im anderen Blatt.
Meine Annahme war jetzt, dass er, wenn kein Gegenstück vorh. ist, den Ursprungswert verwenden soll -> ar5 und ar9 sind anfangs identisch:

ar5 = wks5.Range(Cells(2, 1), Cells(LZA, 87))
ar9 = wks5.Range(Cells(2, 1), Cells(LZA, 87))

ar9 wird nun Schritt für Schritt geändert und am Ende das geänderte array in die Tabelle geschrieben.

Wenn man die Zeile nicht auskommentiert -> 10 Ünies für das aufmerksame Auge 

------------------
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


Sehen Sie sich das Profil von OliverK an!   Senden Sie eine Private Message an OliverK  Schreiben Sie einen Gästebucheintrag für OliverK

Beiträge: 65
Registriert: 03.08.2008

erstellt am: 13. Jan. 2010 12:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke erst mal für die Hilfe,

wir haben glaube ich aneinander vorbei geschrieben ich möchte durch ar9 keine neue tabelle habe sprich durch

Sheets("parts.xml").Range(Cells(2, 87), Cells(LZA, 174)) = ar9

das er es dort hin schreibt.Ich hätte gerne das er die daten in der richtigen tabelle (parts.xml) direkt rein schreibt bzw vorhandene Daten überschreibt daten die er nicht findet nicht berücksichtigt.Vielleicht wenn es noch geht soll er in der Tabelle parts.xml) bei Bestellnummer die er nicht gefunden hat eine 0 eintragen. Ich hoffe ich habe das problem jetzt richtig formuliert was ich habe.

Mfg

Oliver

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

runkelruebe
Moderator
Straßen- / Tiefbau




Sehen Sie sich das Profil von runkelruebe an!   Senden Sie eine Private Message an runkelruebe  Schreiben Sie einen Gästebucheintrag für runkelruebe

Beiträge: 8075
Registriert: 09.03.2006

MS-Office 365 ProPlus x86
WIN7(x64)

erstellt am: 13. Jan. 2010 12:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für OliverK 10 Unities + Antwort hilfreich

Hi Oliver,

>> Ich hätte gerne das er die daten in der richtigen tabelle (parts.xml) direkt rein schreibt

dieser code schreibt nicht "on the fly" direkt in die Tabelle, sondern schreibt erst arrays, arbeitet dann mit diesen arrays und zum Schluß wird das array zurück in die Tabelle geschrieben.
Grund dafür: das ist wesentlich schneller als eine Lösung, die direkt in der Tabelle arbeitet. Ich weiß aber, dass es grad für Anfänger nicht wirklich einfach ist, das sofort zu verstehen. Das tut mir auch ein bißchen leid, aber es gibt im Forum/im www wie erwähnt schon jede Menge threads, die sich mit solchen Vergleichen beschäftigen. Bestimmt findest Du irgendwo eine Lösung, die Du besser nachvollziehen kannst.
Wenn ich die Tage Zeit finde, werde ich den code mal auskommentieren, damit man sieht, was die einzelnen Zeilen tun. Nur heute wird das schätzungsweise nix mehr. Vielleicht heute Abend, statt fernsehen 

>> bzw vorhandene Daten überschreibt daten die er nicht findet nicht berücksichtigt.

das passiert durch den Abgleich
-> wenn gefunden: mach was
wenn nicht gefunden, nimm den nächsten Datensatz

>> Vielleicht wenn es noch geht soll er in der Tabelle parts.xml) bei Bestellnummer die er nicht gefunden hat eine 0 eintragen

Dann beleg das array bei der Bestellnummer mit 0


Sei mir nicht böse, aber Du möchtest gerne eine Fix&Fertig-Lösung, komplett auf Deine Bedürfnisse (die sich übrigens ständig erweitern/ändern) angepaßt haben. Die hast Du in Deinem ersten thread von mir bekommen. Ich habe leider keine Zeit, das jedesmal zu tun, es ist ja nicht so, dass ich das "so runterschreib" sondern ich muß mich da auch jedesmal in Deine Vorgaben reindenken und versuchen zu ergründen, was Du wohl wirklich möchtest.

Bitte beschäftige Dich intensiv mit dem code bzw. VBA im Allgemeinen. (Das dauert ein bißchen, geht nicht in 2 Tagen)
Der Tipp "mit der F8 zeilenweise den code durchgehen, schauen was bei jedem einzelnen Schritt passiert, das Lokalfenster öffnen und dort die Variablen und arrays beobachten" hat weiterhin Bestand.

Ich weiß, Du hättest jetzt gerne etwas anderes gelesen. Sorry. Aber nicht die Hoffnung aufgeben, die Community ist groß 

------------------
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


Sehen Sie sich das Profil von OliverK an!   Senden Sie eine Private Message an OliverK  Schreiben Sie einen Gästebucheintrag für OliverK

Beiträge: 65
Registriert: 03.08.2008

erstellt am: 13. Jan. 2010 13:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja das ist schwer besonders wenn man sich bis dato nie mit ausseinader setzten brauchte. Aber da dies nur eine einmalige sache ist sprich da wird nie wieder was geändert an diesem makro. Mit anderen worten die Tabellen sind fester bestandteil und ändern sich nur von ihrem inhalt und nicht von den Positionen. Ich werde aber mal weiter experimentieren und hoffen das ich auf eine vernünftige Lösung komme  . Ansonsten gibt es ja noch den Manuel dauert zwar dann länger aber man hat ja dann immer noch die hoffnung das die Artikeldaten bank nicht alle zwei Monate neu auf gesetzt wird  , desweiteren noch einen schönen Tag und wäre euch Dankbar wenn sich doch der ein oder andere meines Problems annehmen würde.

Mfg

Oliver

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz