Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Microsoft Microsoft Office

GELÖST

Excel-Makro gesucht: Zusammenführen der verteilten Inhalte mehrerer markierter Zeilen in eine

Mitglied: stschuck

stschuck (Level 1) - Jetzt verbinden

03.07.2013 um 09:25 Uhr, 1884 Aufrufe, 5 Kommentare

Zwar kann ich Excel (2010) ganz gut bedienen, doch keine Makros schreiben. Hab schon viel gegooglet und ähnliche, aber keine genau passenden Lösungen gefunden.
Ich habe das Problem einer riesigen Excel-Tabelle mit ca. 6000 Zeilen und ungefähr 40 Spalten, die durch den Import vieler kleinerer Tabellen entstanden ist. Nun muß ich die über mehrere Spalten und Zeilen verteilten Informationen zu einem Produkt in einer Zeile zusammen fassen. Da im entscheidenden Feld, das mir anzeigt, welche Zeilen zusammen gehören sollen, Schreibfehler und Abweichungen vorkommen können, muss ich die Zeilen schon alle selbst anschauen und kann sie nicht automatisch vergleichen. Ich möchte daher die Zeilen, die zusammengeführt werden sollen, einfach markieren und dann das Makro ausführen, das alle Inhalte in die oberste der markierten Zeilen zusammenkopiert und die darunter stehenden löscht. Wichtig: Die Anzahl der Spalten darf sich auf keinen Fall verändern!
Beispiel:

a57cf109bc6f36dc93c9574f3706d625 - Klicke auf das Bild, um es zu vergrößern

Ich wäre dankbar für eine zeitsparende, einfache Lösung!
Vielen Dank
Stefan
Mitglied: 76109
03.07.2013, aktualisiert 04.07.2013
Hallo stschuck!

Unter der Annahme, dass der markierte Bereich in Spalte A beginnt und nur ein Wert in Spalte A (Inhalt 0) steht. Ausserdem ab der 3. Spalte C nur ein Wert pro Spalte steht...

Unter obiger Annahme könnte es hiermit gehen (Code in Modul einfügen):
01.
Option Explicit 
02.
 
03.
Const iColMax = 40 
04.
 
05.
Public Sub Zusammenfassen() 
06.
    Dim aValues As Variant, aNewValues(1 To 1, 1 To iColMax) As Variant 
07.
    Dim iRowValue As Long, iRowFirst As Long, iRowNext As Long, iRowLast As Long, r As Long, c As Long 
08.
     
09.
    If Selection.Rows.Count < 2 Then 
10.
        MsgBox "Es müssen mindestens 2 Zeilen markiert sein!", vbInformation, "Hinweis...":  Exit Sub 
11.
    End If 
12.
     
13.
    aValues = Selection.Value 
14.
     
15.
    iRowValue = GetRowValue(aValues) 
16.
    iRowFirst = Selection.Row 
17.
    iRowNext = iRowFirst + 1 
18.
    iRowLast = iRowFirst + Selection.Rows.Count - 1 
19.
     
20.
    aNewValues(1, 1) = aValues(iRowValue, 1) 
21.
    aNewValues(1, 2) = aValues(iRowValue, 2) 
22.
     
23.
    For r = 1 To UBound(aValues, 1) 
24.
        For c = 3 To iColMax 
25.
            If Not IsEmpty(aValues(r, c)) Then 
26.
                aNewValues(1, c) = aValues(r, c) 
27.
            End If 
28.
        Next 
29.
    Next 
30.
     
31.
    Rows(iRowNext & ":" & iRowLast).Delete Shift:=xlUp 
32.
    Cells(iRowFirst, 1).Resize(1, iColMax).Value = aNewValues 
33.
End Sub 
34.
 
35.
'Array-Zeile mit Wert in Spalte A ermitteln 
36.
Private Function GetRowValue(ByRef aValues) As Long 
37.
    Dim i As Long 
38.
     
39.
   'Falls Spalte A leer, dann Wert für Spalte B aus 1.er Array-Zeile 
40.
    GetRowValue = 1 
41.
 
42.
    For i = 1 To UBound(aValues, 1) 
43.
        If Not IsEmpty(aValues(i, 1)) Then 
44.
            GetRowValue = i:  Exit For 
45.
        End If 
46.
    Next 
47.
End Function
Gruß Dieter
Bitte warten ..
Mitglied: stschuck
03.07.2013 um 11:58 Uhr
Hallo Dieter,
das sieht schon beeindruckend aus - allerdings bekomme ich die Fehlermeldung: "Laufzeitfehler 9" Index außerhalb des gültigen Bereiches für diese Code-Zeile

:aNewValues(1, 1) = aValues(iRowValue, 1).

Mache ich etwas falsch?
Danke für eine Korrektur.
Viele Grüße Stefan
Bitte warten ..
Mitglied: 76109
03.07.2013 um 12:19 Uhr
Hallo stschuck!

Leider fehlt mir jetzt die Zeit für eine Korrektur, da ich gleich zur Arbeit muss...

Allerdings dürfte der Fehler auftreten, weil in Spalte A kein Wert steht?

Gruß Dieter
Bitte warten ..
Mitglied: stschuck
03.07.2013 um 12:31 Uhr
Hallo Dieter, ja, daran liegt's. In der Spalte A steht nur gelegentlich ein Wert. Ich kann aber prima damit arbeiten, wenn ich einfach die leeren betreffenden Zellen zwischenzeitlich mit einem Hilfszeichen fülle. Dann funktioniert's.
GANZ HERZLICHEN DANK - und gutes Arbeiten
Stefan.
Bitte warten ..
Mitglied: 76109
04.07.2013, aktualisiert um 01:06 Uhr
Hallo Stefan!

Habe im Code (Codezeile 40) noch eine Korrektur eingefügt, wodurch die Spalte A auch Leer sein darf.

Die Korrektur hat folgende Auswirkungen:
Ist die Spalte A im markierten Bereich leer, dann wird der Wert für Spalte B aus der 1.en markierten Zeile übernommen.
Ist die Spalte A im markierten Bereich (beliebige Zeile) nicht leer , dann wird der Wert in Spalte A und der Wert für Spalte B aus der Zeile, in der die Spalte A einen Wert enthält übernommen.

Gruß Dieter
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel nur markierte Zeilen ausdrucken?
Frage von Server4AlleMicrosoft Office3 Kommentare

Hallo, ist es möglich das eine Zeile in Excel nur gedruckt wird wenn eine X in der Zeile in ...

Microsoft Office
Excel-Makro für Textdatenbank gesucht
gelöst Frage von FishersFritzMicrosoft Office2 Kommentare

Hallo zusammen, ich benötige mal wieder Eure Hilfe. Ich suche für ein Autohaus eine einfache Möglichkeit, eine Liste mit ...

Microsoft Office
Excel Zeilen automatisch gruppieren (Makro)
gelöst Frage von LoneStarState01Microsoft Office2 Kommentare

Hallo zusammen, ich komme bei folgendem Problem in Excel einfach nicht weiter und wäre für jede Hilfe dankbar. Ich ...

Microsoft Office
Excel Inhalt mehrere Zellen in einer Zeile nach einem Wert durchsuchen und den Inhalt dann ausgeben
gelöst Frage von michael1306Microsoft Office3 Kommentare

Hallo, für manche wahrscheinlich zimmlich einfach, aber ich komme nicht auf die Lösung. Ich habe eine Excel Tabelle die ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Batch & Shell
Meltdown Microsoft Prüf Script - .zip Datei leider leer
gelöst Frage von MasterBlaster88Batch & Shell13 Kommentare

Hallo zusammen, ich patche gerade unsere Windows Server bzgl. der Meltdown Lücke. Patch vorhanden, Reg Keys gesetzt Um das ...

Batch & Shell
Shell-Skript - Syntax error: Unterminated quoted string
Frage von newit1Batch & Shell13 Kommentare

Hallo Ich schreibe ein Skript das eine CSV-Datei in eine mySQL Datenbank schieben soll. Bekomme nach start des Skrips ...

Monitoring
VPN Performance Zyxel-Fritte
gelöst Frage von HenereMonitoring13 Kommentare

Servus, nachdem ihr mir ja schon so gut helfen konntet, was das VPN zwischen Zyxel USG60W und Fritte 7490 ...

Sicherheit
Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen
Information von FrankSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...