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 Spalten vergleichen und sortieren - VBA?

Frage Entwicklung VB for Applications

Mitglied: CorinnaM

CorinnaM (Level 1) - Jetzt verbinden

07.05.2012 um 15:27 Uhr, 13032 Aufrufe, 8 Kommentare

Hallo liebe VBA Profis,

Ich muss innerhalb eines Excel-Sheets Spalten vergleichen und sortieren. Das ganze gestaltet sich folgendermassen:

Spalte A-C enthält jeweils Artikelnummer, Artikelbezeichnung, neuer Preis.

Spalte D-F enthält jeweils Artikelnummer, Artikelbezeichnung, ALTER PREIS.

Das Problem ist, dass die Positionierung der Artikel von Spalte A-C nicht dieselbe ist wie in Spalte D-F.

Nun muss Spalte D-F genauso sortiert werden in Bezug auf Artikelnummer und Artikelbezeichnung wie die Spalten A-C und Spalte F soll natürlich weiterhin den alten Preis enthalten zu dem richtigen Produkt.

Als Beispiel:

Artikelnummer: 123
Artikelbezeichnung: Tasse
ALTER PREIS: 5.-

Der Preis über 5.- Euro soll natürlich nach der Sortierung weiterhin bei der Tasse stehen und nicht etwa beim Teller.

Spalten A-C dürfen auf gar keinen Fall geändert werden.

Die Artikelnummern sind dieselben in A-C und D-F, mit wenigen Ausnahmen, die es in A-C entweder nicht mehr oder neu dazu gibt.
In diesen Fällen soll Spalten D-F wie folgt geändert werden:
- Produkt gibt es nicht in A-C: Das Produkt in D-F löschen, und zwar die Zellen nicht die ganze Zeile und die Zellen darunter sollen nach oben geschoben werden.
- Produkt gibt es nicht in D-F: Das Produkt in D-F einfügen durch einfügen von Zellen nicht die ganze Zeile und die darunter liegenden Zellen sollen nach unten geschoben werden.

Im Dokument sind maximal ungefähr 2000 Zeilen.

Nun habe ich leider keinerlei Kenntnisse in Visual Basic und müsste aber ein solches Makro erstellen, was doch eigentlich gehen müsste?

Kann mir vielleicht jemand von euch da weiterhelfen?

Vielen Dank
Mitglied: 76109
08.05.2012 um 01:11 Uhr
Hallo CorinnaM!

Sind die Spalten G:I Leer?

Gruß Dieter
Bitte warten ..
Mitglied: Biber
08.05.2012 um 06:39 Uhr
Moin CorinnaM,

willkommen im Forum.
Selbst wenn die Spalten G ff nicht leer sind (was ich annehme) ->falls es keine regelmäßige Aktion ist, sondern etwas Einmaliges, dann mach es mit SVERWEIS().
Kopiere dazu die Spalten D-F in ein neues Tabellenblatt, ersetze die Spalten D-F im "richtigen" Sheet durch SVerweis()-Formeln und ersetze dann diese Spalten mit "Kopieren"/"Inhalte einfügen"/"Werte".

Das hast du bei den paar Daten in 10 Minuten fertig - in der Zeit hat nicht mal didi ein Makro zusammengebraten,
->Würde sich nur lohnen, wenn es eine regelmäßige Aktion wäre, aber dann würde sich die Frage stellen, durch welchen Zaubertrick denn die Spalteninhalte D-F in das Sheet gebeamt werden...

Grüße
Biber
Bitte warten ..
Mitglied: CorinnaM
08.05.2012 um 08:41 Uhr
Vielen Dank für das herzliche willkommen

Ja die Spalten G:I sind leer und ja das ganze ist eine regelmässige Aktion (monatlich). Im Grunde genommen habe ich 2 Excel Dateien. Eine mit den Preisen vom Vormonat und eine mit den Preisen vom aktuellen Monat, nur ist die Positionierung der Artikel in den Tabellen nicht gleich. Was bis anhin gemacht wurde ist, dass die alte Preisliste in die neue kopiert wurde. Danach wurden die Spalten D-F (alte Preisliste) manuell nach den Spalten A-C sortiert, was nicht nur zeitintensiv sondern auch fehleranfällig ist, daher dachte ich an ein Makro und bin bei dem Versuch schlicht an Visual Basic gescheitert.
Bitte warten ..
Mitglied: 76109
08.05.2012 um 09:36 Uhr
Hallo CorinnaM!

@Biber
Das hast du bei den paar Daten in 10 Minuten fertig - in der Zeit hat
nicht mal didi ein Makro zusammengebraten, ...
Solange hat's - wie am Code zu sehen ist - nicht gedauert

Versuchs mal hiermit:
01.
Option Explicit 
02.
 
03.
Private Const SheetName = "Tabelle1"        'Tabellenname entsprechend anpassen 
04.
Private Const StartZeile = 2                'Artikelnummer ab Zeile ? 
05.
 
06.
Sub SortToArtikelNr() 
07.
    Dim Found As Range, i As Long 
08.
     
09.
    With Sheets(SheetName) 
10.
        For i = StartZeile To .Cells(.Rows.Count, "A").End(xlUp).Row 
11.
            Set Found = .Columns("D").Find(.Cells(i, "A").Value, LookIn:=xlValues, LookAt:=xlWhole) 
12.
             
13.
            If Not Found Is Nothing Then 
14.
                Found.Resize(1, 3).Copy .Cells(i, "G") 
15.
            End If 
16.
        Next 
17.
     
18.
       .Columns("D:F").Delete 
19.
    End With 
20.
End Sub 
21.
 
Unter der Annahme, dass die Daten bereits in die Spalten D:F kopiert wurden, den Quellcode im VB-Editor in ein Modul einfügen und über die Excel-Oberfläche (Extras>Makros...) starten.

Funktion:
ArtikelNr von Spalte A in Spalte D suchen und falls gefunden, die Spalten D:F in die Spalten G:I (Zeile von A) kopieren. Anschließend die Spalten D:F löschen.

Gruß Dieter
Bitte warten ..
Mitglied: CorinnaM
08.05.2012 um 09:53 Uhr
Juhuuuu! das funktioniert! juhuuu! super! vielen vielen lieben Dank! Du hast soeben mein Leben erleichtert! juhuu! Vielen Dank Dieter! *vor Freude umherspring*
Bitte warten ..
Mitglied: 76109
08.05.2012 um 10:16 Uhr
Hallo CorinnaM!

Juhuuuu! das funktioniert! juhuuu! super! vielen vielen lieben Dank! Du hast soeben mein Leben erleichtert! juhuu!
Vielen Dank Dieter! *vor Freude umherspring*
Jepp, gern geschehen. Deinen Freudentanz hätte ich ja zu gerne gesehen

Noch einen schönen Tag!

Gruß Dieter
Bitte warten ..
Mitglied: Biber
08.05.2012 um 19:53 Uhr
Moin didi1954 und CorinnaM,

Zitat von 76109:
Solange hat's - wie am Code zu sehen ist - nicht gedauert
Na ja, ich finde zwei Zeilen Code pro Minute UND einen Kommentar pro 10 Zeilen Code schon eine durchaus respektable Leistung
Es gibt eine Menge kohlenstoffbasierte Codegeneratoren z.B. in unserer Firma, denen jedes dieser Qualitätskriterien auf immer unerreichbar bleiben wird.

> Juhuuuu! das funktioniert! juhuuu! super! vielen vielen lieben Dank! Du hast soeben mein Leben erleichtert! juhuu!
> Vielen Dank Dieter! *vor Freude umherspring*
Jepp, gern geschehen. Deinen Freudentanz hätte ich ja zu gerne gesehen
Jepp, so was Schönes hatte ich auch das letzte Mal in "Harry & Sally" gesehen...


Wenn es denn nun ein regelmäßiger Ablauf/Geschäftsprozess ist (jeden Monat) wieder, dann würde ich empfehlen, den manuellen Vorlaufschritt "Kopieren der drei Spalten D-F" auch noch wegzuautomatisieren.

Das Makro könnte - mit drei weiteren Zeilen + Sicherheitsabfrage - auf Knopfdruck auch diese drei Spalten aus einer zweiten Exceldatei lesen, die jeden Monat wieder unter dem gleichen Namen (oder Namensprefix+Datumsendung) wie zum Beispiel "Preise_2012-06.xls" in einem Verzeichnis X:\Austausch" bereitgestellt wird.

@Didi: Du würdest doch bestimmt gerne noch einmal einen so schönen..ääh .... Freudentanz provozieren, oder?

Grüße
Biber
Bitte warten ..
Mitglied: BerndZ
09.02.2013 um 22:51 Uhr
Hallo Didi,

ich bin auf der Suche nach einer Problemlösung durch Zufall auf dieses Makro gestossen - und muss sagen, dass dieses "kurze" Makro schon nahezu alle meine Probleme gelöst hat.

Lediglich ein Problem bleibt noch:
Wenn jetzt ein Artikel dabei ist, der vorher nicht mit in der Artikelliste aufgeführt war (neuer Artikel), wird dieser Artikel so leider noch nicht berücksichtigt.
Wie müsste ich dieses Makro anpassen, damit ein "neuer" Artikel unten an die Liste angehängt wird.
Spalte "A" ist die "vorhandene" Liste mit Artikelnummern
- In Spalte "B" sortiere ich (mit dem Makro) die aktuelle Liste mit Artikelnummern und
- und in Spalte "C" kommen (auch mit dem Makro) die dazugehörigen Werte (in meinem Fall Verkaufszahlen)

einige Zellen in den Spalten "B" + "C" bleiben leer, da manchmal Artikel vorübergehend oder endgültig rausgenommen werden.
"Neue Artikel" müssen unten angefügt werden (in den Spalten "B" + "C")

Danke im voraus,
Bernd
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
gelöst Excel Makro zum Sortieren von Spalten an größeres Dokument Anpassen (2)

Frage von Rolfor zum Thema Microsoft Office ...

VB for Applications
gelöst VBA Excel Skript - Hilfe! (1)

Frage von Compu2017 zum Thema VB for Applications ...

Microsoft Office
VBA Code zum Kopieren von einzelnen Zellen in Excel (3)

Frage von SebastianL zum Thema Microsoft Office ...

VB for Applications
Fusszeile mit PageSetup mit VBA in Excel Makro funktioniert nicht? (5)

Frage von HerrHart zum Thema VB for Applications ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (33)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...

Netzwerke
VPN-Server einrichten PPTPD-Einrichtung gescheitert (14)

Frage von MIlexx zum Thema Netzwerke ...