Nachrückverfahren in Excel programmieren?
Hey Leute, wie programmiere ich ein "Nachrückverfahren" in Microsoft Excel?
Man nehme an, dass man 4 Spalten in einer Reihe hat. Es steht aber nur in den Spalten 2 & 4 etwas drin. Wie schaffe ich es nun, dass die Spalten 2 & 4 auf die Spalten 1 & 2 nachrücken und 3 & 4 am Ende leer bleiben? (Sollte wenn möglich mit jeder Spaltenanordnung funktionieren)
Habe es bis jetzt mit IF-Verschachtelungen versucht, komme aber nicht weiter.
Danke im Voraus
3 Antworten
Mit Hilfszeilen/Hilfsspalten einfach.
-----
Daten in einer Spalte:
Spalte A: Werte
Spalte B: Formel für B1:
=ANZAHL2(A$1:A1)Spalte C: Formel für C1:
=WENN(ISTNV(VERGLEICH(ZEILE();B:B;0));"";VERGLEICH(ZEILE();B:B;0))
Spalte D: Formel für D1:
=WENN(C1="";"";BEREICH.VERSCHIEBEN(A$1;C1-1;0))
Entsprechend für die weiteren Zeilen (Formeln "runterziehen")
-----
Daten in einer Zeile:
Zeile 1: Werte
Zeile 2: Formel für A2:
=ANZAHL2($A1:A1)
Zeile 3: Formel für A3:
=WENN(ISTNV(VERGLEICH(SPALTE();2:2;0));"";VERGLEICH(SPALTE();2:2;0))
Zeile 4: Formel für A4:
=WENN(A3="";"";BEREICH.VERSCHIEBEN($A1;0;A3-1))
Entsprechend für die weiteren Spalten (Formeln "rüberziehen")
-----
Man kann die Formel auch etwas zusammenfassen; hab's aber auf die Schnelle nicht geschafft, den ersten Teil (mit ANZAHL2) in eine Matrixformel aufzunehmen - das braucht also immer noch eine Hilfsspalte (mit ANZAHL2)
Du willst quasi in einer Zeile Leerspalten löschen?
Ist eine VBA-Lösung akzeptabel?
Public Sub Leerspalten_loeschen() Const MAXSPALTE = 1000 Dim iZeile As Integer Dim i, j As Integer
iZeile = InputBox("Zeile") For i = 1 To MAXSPALTE If WorksheetFunction.CountA(Range(Cells(iZeile, i), Cells(iZeile, MAXSPALTE))) = 0 Then _ Exit For While IsEmpty(Cells(iZeile, i)) Cells(iZeile, i).Delete xlToLeft Wend Next End Sub
Du könntest in der Zeile darunter folgende Formel als Matrixformel eingeben (Eingabe mit Strg + Shift + Entf abschließen) und nach rechts ziehen.
=WENNFEHLER(INDEX($A$10:$J$10;1;KKLEINSTE(WENN($A$10:$J$10<>"";SPALTE($A$10:$J$10);10^9);SPALTE(A$10:J$10)));"")
Ich beziehe mich auf Zeile 10. Du kannst eine beliebige Zeile so komprimieren.
Also willst du quasi alle leeren Felder löschen?
Hilft das?-->
http://www.traens.com/tipps/microsoft/excel-leere-zeilen-loeschen.html
Nein die sollen nicht gelöscht werden. Die Zellen in denen Werte sind sollen nur nach Vorn gezogen werden und die leeren stehen ganz am Ende. Quasi eine Schlange die in jedem Feld guckt ob was drin steht und sobald was gefunden wurde wird das ins erste Feld geschrieben und so weiter. Funktioniert bei mir bis jetzt nur für den ersten Wert, danach kommt nichts mehr.
Danke für die Hilfe aber ich brauche die Anwendung tatsächlich nur auf ein kleines Feld in Excel, der Rest soll unangetastet bleiben. Hab quasi mittendrin ein Feld in dem jemand Kommentieren kann und die Kommentare sollen, falls er mal eine Spalte frei lässt, nachrücken zum Kopf des definierten Raums.