Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zahlenwert nach rechts verschieben

Zahlenwert nach rechts verschieben
kurt
Guten Abend,
ich habe ein Problem, wenn in einer Zelle (Spalte I ab Zelle3) der Wert größer ist als 4 stellen,
soll dieser Wert ausgeschnieden und 2 spalten nach rechts verschoben werden,
geht das ?
Die Gesamtlänge ist 10.000 Zellen.
gruß kurt k
Anzeige
AW: Zahlenwert nach rechts verschieben
06.06.2012 21:14:41
M
Versuch mal folgendes:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.AddressLocal > "$I$3" Then
If IsNumeric(Target.Value) Then
If Len(Target.Value) - InStr(Target.Value, ",") > 4 Then
Selection.Cut
ActiveCell.Offset(0, 2).Activate
ActiveSheet.Paste
End If
End If
End If
End Sub

Anzeige
Wie kann ich das Makro starten ?
06.06.2012 21:22:57
kurt
Hallo Merlin,
wie kann ich starten ?
gruß kurt k
AW: Wie kann ich das Makro starten ?
06.06.2012 21:28:10
M
Wenn du das Makro in den Modulbereich der Tabelle kopierst, wird es sofort ausgelöst wenn du eine Zelle in der Tabelle markiertst bzw. Werte eingibst....
Geht nicht
06.06.2012 21:31:01
kurt
Da tut sich nichts,
gruß kurt
Anzeige
AW: Geht nicht
06.06.2012 22:08:43
M
Ersetz nochmal diese Zeile:
Habe die 3 als String verglichen, muss aber ne Zahl sein...
If Adr(1) >= "I" And Adr(2) > 3 Then
AW: Geht nicht
06.06.2012 22:09:37
kurt
Hallo Merlin,
da muss ich jede Zelle anklicken,
es sind 12000 Zellen ?
gruß kurt k
AW: Geht nicht
06.06.2012 22:13:59
M
Jetzt erklär nochmal was du genau machen willst....?
Soll das Macro das ganze blatt Prüfen und jede Zelle durch gehn...?
Ich hatte das so verstanden, wenn du ein Wert eingibts, dann soll der verscoben werden....
Anzeige
Hier nochmal mein Wunsch
06.06.2012 22:17:23
kurt
Hallo,
die Zahlen sind hinterlegt stehen also ggf. drin ich schätze ca. 7.000, es sollte ein Makro die Spalte abprüfen und dann ggf. nach rechts verschieben, wenn der Wert höher ist als z.B. 6 Stellig.
gruß kurt k
Hier nochmal mein Wunsch
06.06.2012 22:17:28
kurt
Hallo,
die Zahlen sind hinterlegt stehen also ggf. drin ich schätze ca. 7.000, es sollte ein Makro die Spalte abprüfen und dann ggf. nach rechts verschieben, wenn der Wert höher ist als z.B. 6 Stellig.
gruß kurt k
Anzeige
Hier nochmal mein Wunsch
06.06.2012 22:17:34
kurt
Hallo,
die Zahlen sind hinterlegt stehen also ggf. drin ich schätze ca. 7.000, es sollte ein Makro die Spalte abprüfen und dann ggf. nach rechts verschieben, wenn der Wert höher ist als z.B. 6 Stellig.
gruß kurt k
AW: Hier nochmal mein Wunsch
06.06.2012 22:33:52
M
Meinst du sowas?
Sub Offset()
Dim r1 As Range
Set r1 = Range("A1:AA1000")
For Each c In r1
Dim Adr() As String
Adr = Split(c.AddressLocal, "$")
If Adr(1) >= "I" And Adr(2) > 3 Then
If IsNumeric(c.Value) Then
If Len(c.Value) - InStr(c.Value, ",") > 4 Then
Selection.Cut
ActiveCell.Offset(0, 2).Activate
ActiveSheet.Paste
End If
End If
End If
Next
End Sub

Anzeige
Warum klappt es nicht ?
07.06.2012 09:45:10
kurt
Guten Morgen Merlin,
ich weiß nicht warum aber es klappt nicht.
Nach Beendigung steht der Courser in der letzten Spalte (256).
gruß kurt k
Zahlen bedingt verschieben - VBA
07.06.2012 08:34:00
Erich
Hi Kurt,
die unter der Tabelle stehende Routine verteilt die Werte aus Spalte I (vorher aus Spalte G nach I kopiert) auf die Spalten I und K:
 GHIJK
2alle alle / kurz lang
31234567   1234567
4123456 123456  
5-234567   -234567
6-23456 -23456  
712345 12345  
80 0  
9123,567   123,567
10123,56 123,56  
11-234,6 -234,6  
12-234,67   -234,67
13-12,3000% -0,123  
14-12,3400%   -0,1234
15abcdefg   abcdefg
16abcdef abcdef  

Hier der Code:

Private Sub cbStart_Click()
Dim lngZ As Long, arQ, arZ(), zz As Long
lngZ = Cells(Rows.Count, 9).End(xlUp).Row - 2   ' Anz. Zeilen ab Zeile 3
arQ = Cells(3, 9).Resize(lngZ)                  ' Quellspalte in Array (Sp. I=9)
ReDim arZ(1 To lngZ, 1 To 1)                    ' Zieldaten anlegen
For zz = 1 To lngZ
If Len(arQ(zz, 1)) > 6 Then               ' wenn Länge > 6 ?
arZ(zz, 1) = arQ(zz, 1)                   ' Übertrag in Zieldaten
arQ(zz, 1) = Empty                        ' Löschen in Quelldaten
End If
Next zz
Cells(3, 9).Resize(lngZ, 1) = arQ               ' Ausgabe in Quellspalte (I=9)
Cells(3, 11).Resize(lngZ, 1) = arZ              ' Ausgabe in Zielspalte (K=11)
End Sub
Und hier eine BeiSpielMappe: https://www.herber.de/bbs/user/80459.xls
Das Kriterium "Wert größer ist als 6 stellen" bzw. "Wert höher ist als z.B. 6 Stellig" ist nicht so recht klar.
Meinst du z. B. Wert > 999999?
Was ist dabei mit Nachkommastellen, Vorzeichen, Prozentzeichen?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Guten Morgen Erich
07.06.2012 09:52:33
kurt
Guten Morgen Erich,
danke auch für deine Unterstützung.
Ich versuche nochmals zu beschreiben.
Wenn die Werte oder auch Text Zahlen egal was in der Spalte I stehen,
sollen dies in die Spalte K verschoben werden, also Spalte I ist dann LEER.
Als Steuerung, wenn die Werte/Zahlen was auch immer > als 6 Zeichen
vorhanden sind.
Würde mich freuen wenn Du nochmals dies liest.
Danke bisher auch an Merlin !!!
gruß Kurt K
Anzeige
Anmerkung
07.06.2012 10:00:10
kurt
Hallo Erich,
habe mal meine Daten in deine Mustermappe kopiert und START
gedrückt.
Super nur die oberere Werte in der Spalte K wurden gelöscht,
ist also der einzige Fehler !
gruß kurt k
Rückfrage
07.06.2012 10:32:20
Erich
Hi Kurt,
was meinst du mit "nur die oberere Werte in der Spalte K wurden gelöscht"?
Sollten Zellen nicht gelöscht werden? Wenn ja: Welche?
Oder sollten mehr als die "oberen" Werte gelöscht werden?
Dann hatte ich da noch diese Frage:
Das Kriterium "Wert größer ist als 6 stellen" bzw. "Wert höher ist als z.B. 6 Stellig" ist nicht so recht klar.
Meinst du z. B. Wert > 999999?
Probier mal die neue Version: https://www.herber.de/bbs/user/80464.xls
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Guten Morgen Erich
07.06.2012 10:51:41
kurt
Guten Morgen Erich,
bitte mal die Mustermappe ansehen in der Spalte AH bis AJ habe ich alle Daten.
Es dürfen die vorhandenen Daten nicht gelöscht werden.
Habe dein Makro Start ausgelöst, leider werden dann die vorhandenen Daten gelöscht.
Es sollten nur Zellen nach RECHTS geschoben werden die in der Anzahl größer 6
sind. ALLE anderen Daten dürfen nicht gelöscht werden.
https://www.herber.de/bbs/user/80465.xls
mfg kurt K
Anzeige
neuer Versuch
07.06.2012 11:20:48
Erich
Hi Kurt,
hoffentlich hab ichs jetzt etwas besser verstanden...: https://www.herber.de/bbs/user/80466.xls
Dann hatte ich da noch diese Frage. Magst du sie nicht beantworten?
Das Kriterium "Wert größer ist als 6 stellen" bzw. "Wert höher ist als z.B. 6 Stellig" ist nicht so recht klar.
Meinst du z. B. Wert > 999999?
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
Danke Erich ! auch danke an Marlin ! -)
07.06.2012 11:33:00
kurt
Hallo Erich,
jawohl dies ist so wie ich es brauch,
DANKE !
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zahlenwerte in Excel nach rechts verschieben


Schritt-für-Schritt-Anleitung

Um in Excel Werte in einer bestimmten Spalte zu verschieben, wenn sie eine bestimmte Länge überschreiten, kannst du das folgende VBA-Makro verwenden. Hier sind die Schritte:

  1. Makro-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke im Menü auf Einfügen und wähle Modul.

  3. Code einfügen: Kopiere und füge den folgenden Code in das Modul ein:

    Sub Offset()
        Dim r1 As Range
        Set r1 = Range("I3:I10000") 'Bereich anpassen, falls notwendig
        For Each c In r1
            If Len(c.Value) > 6 Then 'Wert ist länger als 6 Stellen
                c.Offset(0, 2).Value = c.Value 'Wert nach 2 Spalten nach rechts verschieben
                c.Value = "" 'Zelle leeren
            End If
        Next
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle Offset aus und klicke auf Ausführen.


Häufige Fehler und Lösungen

  • Makro funktioniert nicht: Stelle sicher, dass du das Makro im richtigen Modul eingefügt hast und es keine Schreibfehler im Code gibt.
  • Werte werden nicht verschoben: Überprüfe, ob der Wert tatsächlich länger als 6 Stellen ist und dass die Zellen im richtigen Bereich liegen.
  • Excel läuft nach rechts: Wenn das Makro nicht funktioniert, könnte es daran liegen, dass die Zellen nicht als Zahlen formatiert sind. Stelle sicher, dass die Werte in den Zellen korrekt formatiert sind.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die Funktionen @IF und LEER() in Kombination mit Filter- und Sortierfunktionen nutzen, um die gewünschten Werte manuell zu verschieben.

  1. Füge eine neue Hilfsspalte hinzu, die die Bedingung überprüft.
  2. Verwende eine Formel wie =WENN(LÄNGE(I3)>6;I3;"") in der Hilfsspalte.
  3. Filtere die Ergebnisse, um nur die Werte mit mehr als 6 Stellen zu sehen und kopiere sie manuell in die Zielspalte.

Praktische Beispiele

Hier ist ein Beispiel, wie du das Makro nutzen kannst:

  • Angenommen, in Spalte I stehen die folgenden Werte:
    • 12345
    • 1234567
    • 1234
    • 12345678

Nach dem Ausführen des Makros sollten nur die Werte 1234567 und 12345678 in Spalte K verschoben werden, während Spalte I leer bleibt.


Tipps für Profis

  • Automatisierung: Du kannst das Makro automatisch ausführen lassen, wenn die Datei geöffnet wird oder wenn eine Änderung in der Spalte I vorgenommen wird. Füge dafür den Code in das Workbook_Open oder Worksheet_Change Ereignis ein.
  • Fehlerprotokollierung: Füge eine einfache Fehlerbehandlung in dein Makro ein, um sicherzustellen, dass unerwartete Eingaben nicht zum Absturz des Makros führen.
  • Datenvalidierung: Überlege, die Eingabewerte zu validieren, um sicherzustellen, dass nur Zahlen eingegeben werden, was hilfreich ist, wenn du das Komma verschieben oder die Kommastelle anpassen möchtest.

FAQ: Häufige Fragen

1. Wie kann ich das Makro starten?
Du kannst das Makro über ALT + F8 starten und es auswählen.

2. Was passiert mit leeren Zellen?
Leere Zellen bleiben unverändert, da das Makro nur auf Zellen mit mehr als 6 Zeichen reagiert.

3. Kann ich das Makro für andere Spalten verwenden?
Ja, passe einfach die Bereiche im Code an, um die gewünschten Spalten zu bearbeiten.

4. Wie kann ich sicherstellen, dass Werte nicht gelöscht werden?
Überprüfe den Code, um sicherzustellen, dass du die Zellen nur nach rechts verschiebst und die Originalwerte nicht löschst, es sei denn, du möchtest das so.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige