Excel Cellenwert automatisch verschieben
Hallo,
ich möchte in Openoffice Calc eine Spalte pürfen und je nach Eintrag eines Wertes paar Cellen nach rechts verschieben.
Dies ist ein export der Sparkassenumsätze.
Die Tabelle beinhaltet folgende Werte:
celle frei, Amazon, 150,
celle frei, Jibi,50
In der zweiten Spalte stehen nun die Einkäufte.
Jetzt soll die Spalte 2 jede Zeile pürfen und eine Wert verschieben, wenn wie hier zb Amazon steht.
Wie weit nach recht würde ich fest vorgeben.
Wenn Amazon in der Celle steht, dann den Wert z.b 150 3 Cellen nach rechts verschieben
Wenn Jibi in der Celle steht, dann den Wert 50 6 Cellen nach rechts verschieben.
Wer kann mir bei der Formel helfen und wie hintergeleg ich das, damit in Spalte 2 alle Zeile gepüft werden?
Gruß
ich möchte in Openoffice Calc eine Spalte pürfen und je nach Eintrag eines Wertes paar Cellen nach rechts verschieben.
Dies ist ein export der Sparkassenumsätze.
Die Tabelle beinhaltet folgende Werte:
celle frei, Amazon, 150,
celle frei, Jibi,50
In der zweiten Spalte stehen nun die Einkäufte.
Jetzt soll die Spalte 2 jede Zeile pürfen und eine Wert verschieben, wenn wie hier zb Amazon steht.
Wie weit nach recht würde ich fest vorgeben.
Wenn Amazon in der Celle steht, dann den Wert z.b 150 3 Cellen nach rechts verschieben
Wenn Jibi in der Celle steht, dann den Wert 50 6 Cellen nach rechts verschieben.
Wer kann mir bei der Formel helfen und wie hintergeleg ich das, damit in Spalte 2 alle Zeile gepüft werden?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179335
Url: https://administrator.de/forum/excel-cellenwert-automatisch-verschieben-179335.html
Ausgedruckt am: 22.12.2024 um 16:12 Uhr
12 Kommentare
Neuester Kommentar
@opalka
Da vermutlich in die freien Zellen neue Werte geschrieben werden sollen, müsste, abgesehen von der Tatsache, dass ja alle möglichen Fälle (bisher wissen wir nur von "Amazon" und "Jibi") zu berücksichtigen wären, zumindest noch ein Kopieren und "Als-Wert-Einfügen" der Spalten ab D folgen, da ansonsten deren Inhalte beim Überschreiben der Spaltenwerte in C verlorengehen ...
Meiner obigen Annahme, dass Leerzellen eingefügt werden sollen, entsprechend könnte ein Ansatz in Excel-VBA so aussehen:
Solange in der Spalte C keine neuen Werte eingetragen wurden, kann dieses Makro auch mehrfach ausgeführt werden, ohne dass jedes Mal zusätzliche Leerzellen eingefügt werden.
Grüße
bastla
Da vermutlich in die freien Zellen neue Werte geschrieben werden sollen, müsste, abgesehen von der Tatsache, dass ja alle möglichen Fälle (bisher wissen wir nur von "Amazon" und "Jibi") zu berücksichtigen wären, zumindest noch ein Kopieren und "Als-Wert-Einfügen" der Spalten ab D folgen, da ansonsten deren Inhalte beim Überschreiben der Spaltenwerte in C verlorengehen ...
Meiner obigen Annahme, dass Leerzellen eingefügt werden sollen, entsprechend könnte ein Ansatz in Excel-VBA so aussehen:
Sub Verschieben()
Spalte = 2 'Spalte B enthält zu prüfenden Text
Zeile = 2 'Beginn in dieser Zeile
Set Zelle = Cells(Zeile, Spalte)
Do While Zelle.Value <> ""
Select Case Zelle.Value
Case "Amazon" 'Achtung, Groß-/Kleinschreibung beachten und vollständigen Zelleninhalt angeben!
Sp = 3 'Anzahl einzufügender Spalten (bzw Zellen, da ja auf diese Zeile beschränkt)
Case "Jibi"
Sp = 6
Case Else
Sp = 0
End Select
If Sp > 0 Then If Zelle.Offset(0, 1).Value <> "" Then Zelle.Offset(0, 1).Resize(1, Sp).Insert Shift:=xlToRight
Zeile = Zeile + 1
Set Zelle = Cells(Zeile, Spalte)
Loop
End Sub
Grüße
bastla
@bastla nur hier geht es um OpenOffice und nicht Excel.
Mein Beitrag war ja nur als alternative gedacht. Ansonsten müsste man es eh als Makro programmieren.
Gruß
Mein Beitrag war ja nur als alternative gedacht. Ansonsten müsste man es eh als Makro programmieren.
Gruß
@opalka
... aber ein "Einfügen als Inhalt" (wie es Dein Ansatz mE noch erfordern würde), lässt sich auch in OO realisieren.
Grüße
bastla
@bastla nur hier geht es um OpenOffice und nicht Excel.
Deshalb auch mein Hinweis (auch per Formatierung) auf die Tatsache, dass es ein Excel-Makro ist - ob eine Portierung nach OpenOffice möglich ist, kann ich derzeit nicht beurteiilen ...... aber ein "Einfügen als Inhalt" (wie es Dein Ansatz mE noch erfordern würde), lässt sich auch in OO realisieren.
Grüße
bastla
Hallo bodyparts!
Noch als zusätzlicher Hinweis: Wenn es mehrere Namen gibt, für welche die gleiche Anzahl von Zellen einzufügen ist, kannst Du die nach diesem Muster hinzufügen:
Grüße
bastla
es kann schon vorkommen, dass kein Name wie zb Jibi in der Zelle steht, dann müsste geprüft werden, ob danach noch eine Zelle kommt, wenn nicht, dann ist das Skript fertig.
Falls gemeint wäre "noch eine Zeile kommt", beschreibt das eigentlich ziemlich genau das von mir vorgesehene Verhalten - deswegen ja auch "Case Else
" und die Schleife bis zum Abwinken (weil Zellinhalt endlich nicht mehr <>""
); ansonsten solltest Du nochmals näher erklären, was damit gemeint wäre ...Noch als zusätzlicher Hinweis: Wenn es mehrere Namen gibt, für welche die gleiche Anzahl von Zellen einzufügen ist, kannst Du die nach diesem Muster hinzufügen:
Case "Jibi", "ebay", "juhu"
Sp = 6
bastla
Hallo bodyparts!
In diesem Fall müsste die Schleife anders aufgebaut werden:
Grüße
bastla
In der selben Spalte ist kein Eintrag in zb Zeile 5 dann kommt wieder ein Eintrag der wird aber nicht verschoben.
Ist klar - die Abbruchbedingung ist ja "kein Wert in der geprüften Spalte" ...In diesem Fall müsste die Schleife anders aufgebaut werden:
Sub Verschieben()
Spalte = 2 'Spalte B enthält zu prüfenden Text
ZeileAb = 2 'Beginn in dieser Zeile
For Zeile = ZeileAb To Cells(65535, Spalte).End(xlUp).Row
Set Zelle = Cells(Zeile, Spalte)
Select Case LCase(Zelle.Value)
Case "Amazon" 'Achtung, Groß-/Kleinschreibung beachten und vollständigen Zelleninhalt angeben!
Sp = 3 'Anzahl einzufügender Spalten (bzw Zellen, da ja auf diese Zeile beschränkt)
Case "Jibi"
Sp = 6
Case Else
Sp = 0
End Select
If Sp > 0 Then If Zelle.Offset(0, 1).Value <> "" Then Zelle.Offset(0, 1).Resize(1, Sp).Insert Shift:=xlToRight
Next
End Sub
bastla
Moin bodyparts,
zwei Anmerkungen.
Ausnahmsweise hat sich bastla mal selbst ausgetrickst..
In diesem Fall sprechen Code und Kommentierung für sich selbst und wahrscheinlich muss er selber lachen, wenn er die unfreiwillige Komik nochmal liest. *fg
Zweite Anmerkung.
Dein "Konzept"ist gelinde gesagt ###, aber so was von sollte vielleicht noch mal mit neutralen Beobachtern diskutiert werden.
Normales Vorgehen wäre:
Grüße
Biber
zwei Anmerkungen.
Ausnahmsweise hat sich bastla mal selbst ausgetrickst..
...
Select Case LCase(Zelle.Value)
Case "Amazon" 'Achtung, Groß-/Kleinschreibung beachten und vollständigen Zelleninhalt angeben!
...
Könnte man die Werte die verschoben werden sollen, aus einer eingenen Tabellen nehmen?
Zb Tabelle1 hat die Buchungsnamen mit dem Verschiebewert... in Tabelle2 wird verschoben.
Zb Tabelle1 hat die Buchungsnamen mit dem Verschiebewert... in Tabelle2 wird verschoben.
Zweite Anmerkung.
Dein "Konzept"
Normales Vorgehen wäre:
- es kömmt wie und woher auch immer eine Import-Tabelle in definiertem Format.
- wenn du die in Excel/Calc braucht und in Excel/Calc sehen willst, dann kopiere sie eins-zu-eins in ein Tabellenblatt "Import"
- dabei können wahlweise alle vorher eventuell vorhandenden Daten gelöscht werden oder aber (mit einer zusätzlichen Spalte "Importdatum") immer hinten angehängt werden.
- diese eins-zu-eins-Daten sind READONLY für dich, dienen der Kontrolle und Fehlersuche und da wird nix drei Spalten nach rechts verschoben oder hochkant gestellt oder sonstwas.
- auf dieses Tabellenblatt kannst du LESEND zugreifen und wie zum Beispiel von opalka geschrieben die Daten in anderen Zellen/Tabellenblättern verwenden.
Später möchte ich die Werte noch in eine Art Jahresübersicht prüfen und bei Änderung ersetzen.
Lass uns erstmal bei Step 1 anfangen.Grüße
Biber
@Biber
Grüße
bastla
... wahrscheinlich muss er selber lachen, wenn er die unfreiwillige Komik nochmal liest. *fg
Einer mehr zum Thema "gut gemeint" - meine Offline-Version war schon 1.01 (weil ich etwas in der Art vonBesser wäre ich muss nicht genau auf den Zellen Eintrag achten, wenn der groß/klein Schreibung igno würde
schon irgendwie hatte kommen sehen) - beim Anpassen der Schleife habe ich dann beide Varianten souverän kombiniert ... Grüße
bastla