05.02.2019, 11:43 (Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2019, 11:43 von miro95.)
Moin,
Für eine Hausarbeit muss ich Ausgabedaten verschiedener Programme (es geht um das Wachstum von Pflanzen) in Excel vergleichen und in Diagrammen darstellen. Nun trat das Problem auf, dass das eine Programm jeden Wachstumstag ausgibt und das andere nur die Tage an denen eine Veränderung eintritt. Um das in ein Diagramm zu bekommen möchte ich nun die Datenreihe vom 2. Programm so sortieren, dass die Tage in Spalte B mit den Tagen in Spalte A übereinstimmen und dazwischen Leerzeilen bleiben (das bügelt das Liniendiagramm denn glatt). Unten angehängt ist der aktuelle
und der gewünschte Zustand
!
Danke für die schnelle Antwort, aber das löst bei mir jetzt noch nicht den aha-Effekt aus, habe mich da kurz eingelesen aber verstehe nur Bahnhof. Gibt es da nicht eine einfache Funktion für?
kurzes Einlesen hilft auch nix - die Materie ist schon komplexer. Wenn du eine Beispieldatei hochlädts (anstelle der Bildchen), könnte man vllt. noch andere Ideen ausprobieren.
Gruß Günter Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen. angebl. von Georg Christoph Lichtenberg (1742-1799)
05.02.2019, 15:06 (Dieser Beitrag wurde zuletzt bearbeitet: 05.02.2019, 15:07 von MisterBurns.)
Klicke in deiner Datei mit der rechten Maustaste auf den Reiter des Tabellenblatts und wähle "Code anzeigen". Es öffnet sich der VBA-Explorer. Wähle in der Menüleiste Einfügen - Modul. Im großen weißen Fenster fügst du diesen Code ein, genau so wie er da steht:
Code:
Sub verschieben() Dim i As Long, letzte As Long
Application.ScreenUpdating = False
With Sheets("Data") letzte = .Cells(.Rows.Count, "B").End(xlUp).Row 'letzte Zeile in Spalte B ermitteln letzte = .Cells(letzte, 2).Value + 1 'Wert in letzter Zeile ermitteln For i = 3 To letzte If .Cells(i, 2) - .Cells(i - 1, 2) > 1 Then .Range("B" & i & ":H" & i).Insert Shift:=xlDown .Cells(i, 2) = .Cells(i - 1, 2) + 1 End If Next i End With
Application.ScreenUpdating = True End Sub
Nun setzt du den Mauszeiger an eine beliebige Stelle im Code, irgendwo zwischen "Sub verschieben" und "End Sub" und drückst die Taste F5. Macht das das, was du möchtest?
Falls ja, kannst du den VBA-Explorer schließen und dir irgendwo einen Button oder eine Verknüpfung in der Schnellstartleiste für das Makro erstellen und dieses miteinander verbinden.
eigentlich ist das doch sehr simpel. Du könntest einfach die fehlenden Daten 1, 4, 7, 10 … drunter schreiben und dann den Bereich B:H nach Day sortieren …
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
wenn du einfach anstatt eines Liniendiagrammes ein Punktdiagramm (mit Linien) nimmst benötigst du keine Um- oder Einsortierung.
Das hat auch noch den Vorteil, dass, wenn auch in der ersten Datenreihe Tage fehlen, die Abstände proportional zu den Zeitabständen sind.
helmut
Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität. Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen." Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.