1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

EXCEL, zweizeiliger Datensatz

Discussion in 'Office-Programme' started by yorck, Mar 26, 2008.

Thread Status:
Not open for further replies.
  1. yorck

    yorck Byte

    Verehrte Gemeinde,

    folgendes Problem:
    In einer importierten Tabelle (über 2.000 Datensätze) besteht jeweils ein Datensatz aus zwei Zeilen. Für die Weiterverarbeitung benötige ich jeden Datensatz in e i n e r Zeile. Anders: Ich muß jede zweite Zeile erst nach rechts und dann nach oben versetzen. Weiß jemand Rat, wie ich das automatisieren kann?

    Gruß
    Yorck
     
  2. Hascheff

    Hascheff Moderator

    Hallo yorck,
    das lösen andere Experten hier im Handumdrehen mit einem Makro. Ich müsste dafür eine Weile pfriemeln, also warten wir.

    Ich würde eine Formel verwenden, aber ein Makro ist hier einfacher.

    Eine Frage musst du aber noch beantworten: Steht die ganze Datensammlung in einer Spalte, oder nimmt jeder Datensatz zwei Zeilen und mehrere Spalten ein?

    Ach, noch was: Ist das eine einmalige Aktion oder hast du die Arbeit häufiger?
    Wieviele Zeilen hat die Tabelle?
     
  3. yorck

    yorck Byte

    Hallo Hascheff,

    die Tabelle besteht aus sechs Spalten und zwei Zeilen, also zwölf Zellen pro Datensatz. Insgesamt 4.576 Zeilen.

    Die Arbeit ist Teil eines monatlichen Berichtswesens, kommt also öfter auf mich zu.

    Die Pflicht wäre, die unteren sechs Zellen jedes Datensatzes neben die oberen sechs Zellen zu verschieben.
    Die Kür wäre, zunächst Leerspalten einzufügen, und dann die untere Zeile/Hälfte des Datensatzes eins nach rechts und dann eins nach oben zu verschieben. Das ist aber die Luxusvariante. Abschließend die Spalten in die korrekte Reihenfolge zu bringen, ist derzeit mein geringstes Problem.
     
  4. Beverly

    Beverly Halbes Megabyte

    Hi,

    versuche es mit diesem Code

    Code:
    Sub versetzen()
        Dim loZeile As Long
        Application.ScreenUpdating = False
        For loZeile = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count) - 1 To 1 Step -2
            Range(Cells(loZeile + 1, 1), Cells(loZeile + 1, 6)).Copy Cells(loZeile, 7)
            Rows(loZeile + 1).EntireRow.Delete
        Next loZeile
        Application.ScreenUpdating = True
    End Sub
    
    
     
  5. Urs2

    Urs2 Megabyte

    @York --- In meinem Excel 2003 funktioniert es so >

    - Rechtsklick auf das Tab Deines Arbeitsblattes > Code anzeigen >> jetzt öffnet der VB-Editor
    - Diesen Code mit Copy/Paste dort einfügen... und anpassen...
    -- Meine Zellen "A9:F9" müssen Deinen 6 Zellen in der 2. Zeile des 1.Datensatzes entsprechen
    -- Die 2288 ist die Anzahl der zweizeiligen Datensätze

    Code:
    Sub Zeilen_Anhängen()
    
            'A9-F9 ist die 2. Zeile im 1. Datensatz
        Range("A9:F9").Select
        
            'Anzahl der zweizeiligen Datensätze
    For i = 1 To 2288
    
        copySel = Selection.Value
        Selection.Offset(-1, 6).Select
        Selection.Value = copySel
        Selection.Offset(1, -6).Select
        Selection.Rows.Delete
        Selection.Offset(1, 0).Select
        
    Next
            'setzt Fokus an den Anfang
        Range("A9").Select
        
        
    End Sub
    
    Jetzt das Makro laufen lassen, direkt im VB-Editor, oder in Excel > Extras > Makros.
    Nachher könnte man noch einen Button auf das Blatt setzen...

    Es werden die Zellen 7-12 aus der 2.Zeile an die 1.Zeile angehängt - die überflüssige Zeile wird entfernt - in allen Datensätzen - am Schluss geht der Fokus wieder oben aufs Blatt.

    Gruss Urs


    @Karin
    Superservice, gleich zwei Vorschläge aufs Mal
    Jetzt darf er auswählen...
    Gruss Urs
     
  6. yorck

    yorck Byte

    Dank an Beverly und Urs!

    Ich habe beide Varianten ausprobiert und sie funktionieren perfekt. Beide haben ihren Charme. Welche sich durchsetzt, werde ich erst in den nächsten Wochen herausfinden. Egal, Ihr habt mir sehr geholfen.

    Gruß
    Yorck
     
  7. Beverly

    Beverly Halbes Megabyte

    @Urs,

    wer die Wahl hat, hat die Qual, aber wohl dem, der die Wahl hat ;).

    Deinen Code könntest noch ein Stückchen schneller machen, wenn du zu Beginn die Bildschirmaktualisierung aus- und am Ende wieder einschaltest - dann verringert sich der Durchlauf (unter den Bedingungen meines Rechners) von 48 auf 8 Sekunden :cool:.
     
  8. Hascheff

    Hascheff Moderator

    Hallo Beverly, hallo Urs,
    ich habe es fast geahnt - jetzt habt ihr euch beide Arbeit gemacht. Als Urs die Frage gelesen hat, war Beverly sicher noch nicht online, er konnte nicht erkennen, dass Beverly vor ihm den Code schreibt. Es hätte bloß noch gefehlt, dass ich mich gleich nach meinem Post hingesetzt hätte, ich wäre ungefähr zwischen euch beiden fertig geworden.
    Ich bin zufrieden, dass ich die richtigen Fragen gestellt habe, so dass ihr gleich loslegen konntet. Ich wollte eigentlich nach #3 nochmal posten, aber dann fehlte mir die Zeit, und zwar zu folgendem:

    @ TO: Beverlys Code hat den Vorteil, dass es nicht genau 4.576 Zeilen sein müssen. Ich glaube nicht, dass es jeden Monat gleich viele Zeilen sind.
     
  9. Urs2

    Urs2 Megabyte

    @Beverly ---- Screenupdating... Richtig!
    Zum Einzelschritt-Testen kann ich es nicht brauchen, bei meinen zehn Testzeilen war es auch nicht nötig, und nachher... habe ich einfach nicht daran gedacht.
    Ich habe selten mit so vielen Durchgängen und jeweils neuen Bildschirmen zu tun. In Word musste ich es schon einsetzen, aber dort scheint mir der Bildschirmaufbau sowieso langsamer zu sein. Und ich mag es, anderen bei der Arbeit zuzusehen...


    @Hascheff --- ...im Handumdrehen lösen...
    Da hattest Du doch sicher nicht mich gemeint? Bei schwierigen Problemen brauche ich schon mal bis zu 2 Minuten... :cool:
    An die veränderlich Anzahl der Datensätze hatte ich schon gedacht, dann müsste man sie vorgängig in eine Variable zählen und dann For... 1 to variable.
    Trotz Deiner guten Fragen ist ja auch nicht klar, ob das immer die gleichen Mappen/Arbeitsblätter/Zellen sind. Der TO wird schon wissen, was er anpassen muss...


    @yorck --- falls Du meinen Script testest...
    ...setze bitte vor die Zeile "For i = ..." bzw nach "next" die beiden Zeilen
    Application.ScreenUpdating = False bzw. True

    Gruss Urs
     
  10. Beverly

    Beverly Halbes Megabyte

    Hi Urs,

    mein Beitrag war keinesfalls als Kritik an deinem Code gedacht. Da ich aber häufig mit großen Datenmengen arbeite und generell kein Freund vom Bildschirmflackern bin ;) fallen mir solche Dinge halt einfach auf.
     
  11. Urs2

    Urs2 Megabyte

    Hatte ich auch überhaupt nicht so verstanden, sondern als nützlichen Hinweis.
    Hattest Du etwa meinen Satz "Und ich mag es, anderen bei der Arbeit zuzusehen." falsch verstanden?
    Ich meinte damit, dem PC bei seiner Schwerarbeit zuschauen..

    Gruss Urs
     
Thread Status:
Not open for further replies.

Share This Page