Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel Makro Tabellen vergleichen und Werte vervollständigen

Frage Entwicklung VB for Applications

Mitglied: ooLADYLUCKoo

ooLADYLUCKoo (Level 1) - Jetzt verbinden

11.08.2013, aktualisiert 01:46 Uhr, 4860 Aufrufe, 11 Kommentare, 2 Danke

Hallo! Ich suche dringend Hilfe..

Es geht um eine Excel Datei z.b. (test.xls) mit mehreren Inhalten.

(In der ersten Zeile steht natürlich immer die Überschrift)

Spalte A bis D beinhalten die Artikelnummer (A=123,B=456,C=789,D=000) Die komplette Artikelnnummer lautet also: 123456789000.

Spalte E bis J beinhalten Informationen über das Produkt. (E=Obst, F=Birne, G=Preis, H=Menge etc.)

In einer anderen Excel Datei z.b. (vorlage.xls) habe ich mehrere Tabellenblätter unterteilt in Artikelnummern. z.b:

Tabelle1 Artikelnummer: 123456789000 (A=123,B=456,C=789,D=000) bis 123456789020 (A=123,B=456,C=789,D=020)

Tabelle2 Artikelnummer: 123456789021(A=123,B=456,C=789,D=021) bis 123456789050(A=123,B=456,C=789,D=050)

usw. bis Tabelle 10

Jetzt möchte ich das die Artikelnummern beider Dateien verglichen werden und bei identischer Artikelnummer (Spalte A - D) die komplette Zeile also von der test.xls übernommen werden soll in das jeweilige Tabellenblatt der vorlage.xls Datei ab Spalte A Zeile 30. Die Artikelnummern können auch mehrfach vorkommen mit unterschiedlichen Inhalten wie beispielsweise die Spalte G mit unterschiedlichen Preisen oder die Spalte H mit unterschiedlichen Mengen.

Praktisch wäre es auch die Preise und Mengen in den jeweiligen Tabellenblätter zu summieren, damit man sofort einen Überblick hat.

Zu guter Letzt, müsste man die Endpreise und die Endmengen in ein seperates Tabellenblatt (Gesamtergebnis) aufführen und summieren um ein Gesamtbetrag und eine Gesamtmenge zu erhalten.

Bin ja mal gespannt ob das jemand hinbekommt..

Danke schon mal im Voraus!
Mitglied: Pjordorf
11.08.2013 um 08:14 Uhr
Hallo,

Zitat von ooLADYLUCKoo:
Ich suche dringend Hilfe..
Sicher?

Bin ja mal gespannt ob das jemand hinbekommt..
Ist das jetzt eine Prüfungsfrage an uns um dir zu beweisen wer was in Excel und VBA drauf hat odre soll das ein Wettbewerb unter deinen Sklaven sein? Wir sind weder deine Hibis noch dein Mitarbeiter/Angestellte oder so. Wir nehmen unser Wissen und unsere Freizeit dazu um leuten wie dir zu Helfen, nicht um Auftrgäge für lau durchzuführen. Du hast ja noch nicht einmal ein Anrsatz deines Geforderten VBA Codes hier rein gestellt wo wir dir bei Probleme gerne behilflich sein können. Sicher das dein Smily deinen Satz kompensiert?



Danke schon mal im Voraus!
Und dieses ewige im Voraus. Zahlst du bei Aldi und Co. auch immer im Voraus?

Gruß,
Peter
Bitte warten ..
Mitglied: colinardo
11.08.2013, aktualisiert um 11:27 Uhr
Hallo ooLADYLUCKoo. Willkommen im Forum.
da hast du "LUCK" das Sonntag ist ... und meine Finger nach VBA lechzen =8-)
Öffne den VBA Editor(ALT-F11) in deinem Sheet test.xls und füge Ihn im Abschnitt "Diese Arbeitsmappe" ein.
Dann musst du noch den Pfad zur vorlage.xls in Zeile 5 des Codes an deine Umgebung anpassen. Dann Cursor in der Prozedur platzieren und F5 drücken.
01.
Sub vergleicheArtikel() 
02.
    Dim sourceSheet As Worksheet, targetSheet As Worksheet, targetWorkbook As Workbook 
03.
    Dim sCell As Range, tCell As Range 
04.
    Set sourceSheet = Worksheets(1) 
05.
    Set targetWorkbook = Application.Workbooks.Open("D:\vorlage.xls") 
06.
    Set sCell = sourceSheet.Range("A2") 
07.
     
08.
    For i = 1 To 10     'Loop Target Worksheets 1-10 
09.
        Set targetSheet = targetWorkbook.Worksheets(i) 
10.
        Set tCell = targetSheet.Range("A2") 
11.
        Set outputCell = targetSheet.Range("A30") 
12.
        While sCell.Value <> ""     'Loop Source Artikelnummern 
13.
            art_nr_source = sCell.Value & sCell.Offset(0, 1).Value & sCell.Offset(0, 2).Value & sCell.Offset(0, 3).Value 
14.
         
15.
            For y = 2 To 29     'Loop through row 2 to 29 
16.
                art_nr_target = tCell.Value & tCell.Offset(0, 1).Value & tCell.Offset(0, 2).Value & tCell.Offset(0, 3).Value 
17.
                If art_nr_source = art_nr_target Then   'When art_nr matching copy source columns to target 
18.
                    sourceValues = Range(sCell, sCell.Offset(0, 9)).Value 
19.
                    Range(outputCell, outputCell.Offset(0, 9)).Value = sourceValues 
20.
                    Set outputCell = outputCell.Offset(1, 0) 
21.
                End If 
22.
                Set tCell = tCell.Offset(1, 0) 
23.
            Next 
24.
            Set tCell = targetSheet.Range("A2") 
25.
            Set sCell = sCell.Offset(1, 0) 
26.
        Wend 
27.
        Set sCell = sourceSheet.Range("A2") 
28.
    Next 
29.
End Sub
Als Übungsaufgabe habe ich dir noch die Summierung gelassen, damit du noch was zu tun hast ... und du damit hoffentlich etwas Excel-VBA lernst

Grüße Uwe
Bitte warten ..
Mitglied: ooLADYLUCKoo
11.08.2013 um 18:31 Uhr
Danke Uwe hat super geklappt!

Jetzt kommt das "aber"...

Hab die Übungsaufgabe leider nicht ganz lösen können.
Die Gesamtsumme und die Gesamtmenge habe ich soweit errechnen können. Leider macht er das NUR für das erste Tabellenblatt und nicht für alle 10

Range("I23").Value = WorksheetFunction.Sum(Columns(7))
Set sCell = sourceSheet.Range("A2")
Range("J23").Value = WorksheetFunction.Sum(Columns(8))

Vllt kannst du mir noch ne kleine Hilfestellung geben das wäre sehr nett.

Einen ganz lieben Gruß und ein dickes Bussi
Bitte warten ..
Mitglied: colinardo
11.08.2013, aktualisiert um 23:50 Uhr
versuchs mal mit
targetSheet.Range("I23").Value = ...
usw.
wenn du nur Range() verwendest nimmt Excel immer das gerade angezeigte Sheet, d.h bei deiner Version werden die selben Zellen 10 mal überschrieben.
Die Variable targetSheet wird immer auf das zu bearbeitende Sheet gesetzt, und wenn du das als Quelle für die Range Funktion nimmst landen die Summen auch auf den jeweiligen Tabellenblättern.

Schönen Abend noch !
Uwe
Bitte warten ..
Mitglied: ooLADYLUCKoo
11.08.2013 um 21:06 Uhr
Hallöchen!

Ich hab das mal grad versucht. Die Gesamtsumme ist irgendwie in jeder Tabelle identisch. Das Makro berechnet den Wert der ersten Tabelle und übernimmt diesen für alle weiteren Tabellen. Was mach ich falsch?

Dir auch noch einen schönen Abend!
Bitte warten ..
Mitglied: colinardo
12.08.2013, aktualisiert um 09:16 Uhr
01.
Sub vergleicheArtikel() 
02.
    Dim sourceSheet As Worksheet, targetSheet As Worksheet, targetWorkbook As Workbook 
03.
    Dim sCell As Range, tCell As Range, outputCell As Range 
04.
    Set sourceSheet = Worksheets(1) 
05.
    Set targetWorkbook = Application.Workbooks.Open("E:\vorlage.xlsm") 
06.
    Set sCell = sourceSheet.Range("A2") 
07.
     
08.
    For i = 1 To 10     'Loop Target Worksheets 1-10 
09.
        Set targetSheet = targetWorkbook.Worksheets(i) 
10.
        Set tCell = targetSheet.Range("A2") 
11.
        Set outputCell = targetSheet.Range("A30") 
12.
        While sCell.Value <> ""     'Loop Source Artikelnummern 
13.
            art_nr_source = sCell.Value & sCell.Offset(0, 1).Value & sCell.Offset(0, 2).Value & sCell.Offset(0, 3).Value 
14.
         
15.
            For y = 2 To 29     'Loop through row 2 to 29 
16.
                art_nr_target = tCell.Value & tCell.Offset(0, 1).Value & tCell.Offset(0, 2).Value & tCell.Offset(0, 3).Value 
17.
                If art_nr_source = art_nr_target Then   'When art_nr matching copy source columns to target 
18.
                    sourceValues = Range(sCell, sCell.Offset(0, 9)).Value 
19.
                    Range(outputCell, outputCell.Offset(0, 9)).Value = sourceValues 
20.
                    Set outputCell = outputCell.Offset(1, 0) 
21.
                End If 
22.
                Set tCell = tCell.Offset(1, 0) 
23.
            Next 
24.
            Set tCell = targetSheet.Range("A2") 
25.
            Set sCell = sCell.Offset(1, 0) 
26.
        Wend 
27.
        Set sCell = sourceSheet.Range("A2") 
28.
        outputCell.Offset(0, 5).Value = "Summen:" 
29.
        outputCell.Offset(0, 6).Formula = "=Sum(G2:" & outputCell.Offset(-1, 6).Address & ")" 
30.
        outputCell.Offset(0, 7).Formula = "=Sum(H2:" & outputCell.Offset(-1, 7).Address & ")" 
31.
    Next 
32.
End Sub
Bitte warten ..
Mitglied: ooLADYLUCKoo
13.08.2013 um 18:55 Uhr
DANKE UWE!!!

Wie lautet denn der Code wenn ich mehrere Zellen vergleichen möchte? Beispiel anstatt A-D, A-E?

Schönen Abend noch!

Bussl
Bitte warten ..
Mitglied: Biber
13.08.2013, aktualisiert um 19:11 Uhr
[OT]
... also, Bussl hin oder her... ich finde irgendwie Aufwand und Absaugen ein Bissl ungleich verteilt in diesem Beitrag.

Was wäre denn deine Vermutung, Lady, an welcher Stelle in dem Schnipsel du von If art_nr_source = art_nr_target auf mehrere Felder erweitern könntest?
Und wieso fallen dir nach jeder schon mundgerechten Lösung noch zwei Zusatzschmankerl ein?

Ich lass mal ein "gefällt mir nich'" hier.

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: colinardo
13.08.2013, aktualisiert um 19:46 Uhr
Zitat von ooLADYLUCKoo:
Wie lautet denn der Code wenn ich mehrere Zellen vergleichen möchte? Beispiel anstatt A-D, A-E?
Schau die mal die folgenden Zeilen an
01.
art_nr_source = sCell.Value & sCell.Offset(0, 1).Value & sCell.Offset(0, 2).Value & sCell.Offset(0, 3).Value & [DER PREIS IST HEISS 1] 
02.
 
03.
art_nr_target = tCell.Value & tCell.Offset(0, 1).Value & tCell.Offset(0, 2).Value & tCell.Offset(0, 3).Value & [DER PREIS IST HEISS 2]

Preisfrage: Was passt auf [DER PREIS IST HEISS 1 UND 2]
Ist es
  • TOR 1: Ernie und Bert ?
  • TOR 2: Schneeflitchen und die sieben Zwerge ?
oder
  • TOR 3: sCell.Offset(0,4). Value bzw. tCell.Offset(0,4).Value ?

dann kommst du bestimmt drauf.
Bussl
bussl mit Zunge bis zum Zäpfchen ;-p
Sorry der musste jetzt raus ...

Abschliessend den Beitrag noch als gelöst markieren. Merci.
Bitte warten ..
Mitglied: ooLADYLUCKoo
13.08.2013 um 20:42 Uhr
Auf die Idee bin ich gestern auch gekommen jedoch führt diese Lösung nicht zum gewünschten Ergebnis. Nehme ich allerdings die Summierung raus, funktioniert es einwandfrei..


Uwe? be a dear and help me..
Bitte warten ..
Mitglied: ooLADYLUCKoo
13.08.2013 um 21:34 Uhr
Huch es hat sich tatsächlich ein Tippfehler eingeschlichen!

Jetzt funktionierts, DANKE!

Gut's Nächtle
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(7)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Microsoft Office
Excel 2010 - Zwei Tabellen vergleichen (Zugriffsprüfung) (2)

Frage von d4shoerncheN zum Thema Microsoft Office ...

Microsoft Office
Excel Dateien durchsuchen und Werte einzeln in neue Excel Datei auslesen (1)

Frage von krischanii zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel-Makro (7)

Frage von yuki13 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel Makro : Erst prüfen bei erfolgreicher IF einen Wert überschreiben (4)

Frage von Matze1508 zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (17)

Frage von Unwichtig zum Thema Netzwerkmanagement ...