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

Forumthread: Excel-möglichkeit zahlen ergänzen?

Excel-möglichkeit zahlen ergänzen?
26.04.2005 10:29:14
Thomas
Hallo zusammen,
Folgendes Problem:
Jemand schreibt täglich mehrere 7stellige Zählerstände auf. Dabei notiert er immer nur die letzten 3-4 Zahlen, die sich auch wirklich geändert haben. Danach tippt er das ganze in excel, wo er dann jedoch die komplette Zahl neu tippen muss.
Gibt es eine Möglichkeit, das dieser Jemand nur die letzten zahlen eingibt und excel automatisch den Rest (also dass was davor steht) ergänzt?
Wenn nicht, wie könnte so etwas in VBA aussehen?
Vielen Dank, Thomas
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Excel-möglichkeit zahlen ergänzen?
26.04.2005 10:31:46
Dr.
Yep, benutzerdefiniertes Zahlenformat zum Beispiel so:
1234#####
AW: Excel-möglichkeit zahlen ergänzen?
26.04.2005 10:52:57
Thomas
Hmmm....die Idee ist schon nicht schlecht, aber soooo einfach geht es nicht :-)
Wenn ich das so mache, dann schreibt er ja nur immer die 1234 davor. Wenn sich der Stand aber auf 1235 ändert, würde es ja schon nicht mehr klappen. Es müsste schon so sein, das Excel die letzten 3 oder 4 oder 5 oder wieviel auch immer Zahlen übernimmt...
Anzeige
AW: Excel-möglichkeit zahlen ergänzen?
26.04.2005 11:15:34
MichaV
Hi,
in A1 steht 12345
in A2 steht 90
in B2 steht =(VERKETTEN(LINKS(A1;LÄNGE(A1)-LÄNGE(A2));A2))*1
das ist dann 12390
Probier mal aus, ob das so genügt. Wenn sich eine Stelle mehr geändert hat, muß auch eine mehr eingegeben werden.
Gruß- Micha
AW: Excel-möglichkeit zahlen ergänzen?
26.04.2005 11:21:48
Martin
Hallo Thomas,
versuch's mal mit folgender Ereignisprozedur:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errorhandler
If Not Application.Intersect(Target, Range("A2:A100")) Is Nothing Then
Set Quelle = Target.Offset(-1, 0)
If Not IsEmpty(Quelle) Or IsNumeric(Quelle) Then
Application.EnableEvents = False
Target.ClearContents
MsgBox "Zelle zur Datenübernahme ist leer bzw. enthält keine Zahl"
Target.Select
Application.EnableEvents = True
Exit Sub
End If
Application.EnableEvents = False
Target = CDbl(Left(Quelle, Len(Quelle) - Len(Target)) & Target)
Application.EnableEvents = True
End If
errorhandler:
Application.EnableEvents = True
End Sub

Der Code gehört nicht in ein normales Modul. Rechtsklick auf das Tabellenregister und dann "Code anzeigen", dort den Code hineinkopieren.
Außerdem bin ich in dem Beispiel davon ausgegangen, daß in A1 eine Ausgangszahl steht (erster Zählerstand) und dann nacheinander in A2:A100 Zählerstände eingegeben werden. Das mußt Du ggf. anpassen.
Gruß
Martin Beck
Anzeige
in Hilfsspalte
26.04.2005 11:20:35
Reinhard
Hallo Thomas,
=LINKS("1234567";7-LÄNGE(A1))&A1
Viele Grüße
Reinhard
Format Zelle "333666"000
26.04.2005 11:35:10
serge
Hi Thomas und wie wärs mit:
Format Zelle "333666"000 damit kannst Du auch weiterrechnen!
Serge
AW: Format Zelle "333666"000
26.04.2005 11:40:47
Thomas
Vielen Dank erstmal für so viele Möglichkeiten !!!
Aber so richtig klappen tut es immer noch nicht.
Am besten würde mir eine Lösung ohne Hilfszeile gefallen, also die VBA - Lösung. Da meckert er allerding immer das die Zelle leer oder keine Zahl sei.......
egal was ich mache
Anzeige
AW: Zur VBA-Lösung
26.04.2005 11:52:46
Martin
Hallo Thomas,
der Code funktioniert, ich habe ihn getestet. Voraussetzung ist, daß die Zählerstände untereinander eingetragen werden und das der Code von Dir korrekt angepasst wurde, was offensichtlich nicht der Fall ist. Einzige CHance: Lade die Datei hoch, damit ich den Code an Deinen TAbellenaufbau anpassen kann. Oder schreibe zumindest, wo die DAten in die Tabelle eingetragen werden sollen. In meinem Beispiel funktioniert es wie folgt:
A1: 1234567
A2: Eingabe: 899; in der Zelle steht 1234899
A3: Eingabe: 5215; in der Zelle steht 1235215
usw.
Gruß
Martin Beck
Anzeige
AW: Zur VBA-Lösung
26.04.2005 12:09:42
Thomas
Hallo Martin,
vielen Dank erstmal für deine Geduld mit mir :-)
ich habe den Code garnicht angepasst. Ich probiere es genau so, wie du es beschrieben hast. In A1 steht 1234567, in A2 schreibe ich 888. Dann kommt das Meldungsfenster mit der Fehlermeldung....
ups AW: Zur VBA-Lösung
26.04.2005 12:46:01
Martin
Hallo Thomas,
mea culpa, ein "Not" stand an der falschen Stelle. So sollte es gehen:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errorhandler
If Not Application.Intersect(Target, Range("A2:A100")) Is Nothing Then
Set Quelle = Target.Offset(-1, 0)
If IsEmpty(Quelle) Or Not IsNumeric(Quelle) Then
Application.EnableEvents = False
Target.ClearContents
MsgBox "Zelle zur Datenübernahme ist leer bzw. enthält keine Zahl"
Target.Select
Application.EnableEvents = True
Exit Sub
End If
Application.EnableEvents = False
Target = CDbl(Left(Quelle, Len(Quelle) - Len(Target)) & Target)
Application.EnableEvents = True
End If
errorhandler:
Application.EnableEvents = True
End Sub

Gruß
Martin Beck
Anzeige
ups AW: Zur VBA-Lösung
26.04.2005 13:10:41
Thomas
So funktioniert es....
Kann ich das auch auf mehrere Bereiche ausweiten? Wenn meine Daten z.b. in A1-A20 (1.Zähler), B1-B20 (2.Zähler) usw. stehen?
Erweiterung
26.04.2005 13:24:16
Martin
Hallo Thomas,
der Bereich, in dem die Prozedur ausgelöst wird, wenn in einer der Zellen manuell ein Wert geändert wird, wird durch
Range("A2:A100")
festgelegt.
Das kannst Du z.B. in
Range("A2:C20")
ändern. Dann funktioniert der Code in den Spalten A,B, C in den Zeilen 2 bis 20, wobei in A1, B1 und C1 jeweils ein "Startwert" vorhanden sein muß, ab dem gezählt wird.
Gruß
Martin Beck
Anzeige
AW: Format Zelle "333666"000
26.04.2005 11:58:32
Reinhard
Hallo Thomsas,

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Or Target = "" Then Exit Sub
Target = Left("1234567", 7 - Len(Target)) & Target
End Sub

Viele Grüße
Reinhard
AW: Format Zelle "333666"000
26.04.2005 12:12:52
Thomas
Hallo Reinhard,
vielen Dank für Deinen Lösungsvorschlag. Allerdings tut sich bei mir nichts :-(
Wo muss ich was eingeben, damit es funktioniert?
Mfg, Thomas
Anzeige
AW: Format Zelle "333666"000
26.04.2005 12:17:55
Reinhard
Hallo Thomas,
Code funktioniert.
Rechtsklick unten auf den Tabellenreiter, Code anzeigen, dorthin den Code kopieren.
dann in Spalte A was eingeben...
Die 1 in dem befehl
If Target.Column 1 Or Target = "" Then Exit Sub
ist die Spalte 1, 2= B , 3= C usw.
Viele Grüße
AW: Format Zelle "333666"000
26.04.2005 12:28:20
Thomas
Ah ja, jetzt tut sich was..... allerdings ist die funktion nicht korrekt.
Ich habe den Zählerstand 1234567
Ich gebe ein "800"
Ich bekomme 1234800 = Richtig
Danach gebe ich ein 90
Sollte kommen: 1234890
Es kommt: 1234590
Anzeige
AW: Format Zelle "333666"000
26.04.2005 12:39:10
Reinhard
Hallo Thomas,
axo, der Zähler soll hochzählen je tiefer man in Apalte A kommt? naja, vielleicht heisst er deshalb Zähler *g

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Or Target = "" Or Target.Address = "A1" Then Exit Sub
Target = Left(Target.Offset(-1, 0), 7 - Len(Target)) & Target
End Sub

Viele Grüße
Anzeige
Korrektur
26.04.2005 12:41:22
Reinhard
Hallo Thomas,
so klappts:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 Or Target = "" Or Target.Address(0,0) = "A1" Then Exit Sub
Target = Left(Target.Offset(-1, 0), 7 - Len(Target)) & Target
End Sub

Viele Grüße
Anzeige
AW: Korrektur
26.04.2005 12:56:58
Thomas
Jau, so klappts ... Vielen Dank für Deine Geduld.... :-)
Thomas
AW: Format Zelle "333666"000
26.04.2005 12:45:49
Thomas
Sieht gut aus, Formel enthält allerdings einen Fehler... Kommt sofort das "Debug"-Menue
;
Anzeige
Anzeige

Infobox / Tutorial

Excel: Zahl automatisch ergänzen


Schritt-für-Schritt-Anleitung

  1. Ausgangszahl festlegen: Trage in Zelle A1 deinen Ausgangszählerstand ein, z.B. 1234567.

  2. Eingabezelle festlegen: In den Zellen darunter (z.B. A2, A3 usw.) wirst du die letzten Ziffern eingeben, die sich ändern.

  3. VBA-Code hinzufügen:

    • Klicke mit der rechten Maustaste auf den Tabellenreiter (z.B. "Tabelle1") und wähle "Code anzeigen".
    • Füge den folgenden VBA-Code ein:
    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Column <> 1 Or Target = "" Or Target.Address(0, 0) = "A1" Then Exit Sub
       Target = Left(Target.Offset(-1, 0), 7 - Len(Target)) & Target
    End Sub
  4. Testen: Gebe in Zelle A2 eine Zahl ein, z.B. 800. Die Zelle sollte dann automatisch 1234800 anzeigen. Bei der Eingabe von 90 in A3 sollte das Ergebnis 1234890 sein.


Häufige Fehler und Lösungen

  • Excel ändert letzte Zahl in 0: Wenn nach der Eingabe einer Zahl die letzte Ziffer in 0 geändert wird, überprüfe, ob der VBA-Code korrekt eingefügt wurde. Ein häufiger Fehler ist die falsche Platzierung von Bedingungen im Code.

  • Zelle bleibt leer: Achte darauf, dass die Zelle A1 tatsächlich einen Wert enthält und dass der VBA-Code nicht an einer falschen Stelle aktiviert wird.


Alternative Methoden

  • Benutzerdefiniertes Zahlenformat: Du kannst in Excel ein benutzerdefiniertes Zahlenformat verwenden, um die Zahlen zu ergänzen. Gehe zu "Zellen formatieren" und wähle "Benutzerdefiniert". Gib ein Format wie 1234##### ein, aber beachte, dass dies nur für gleichbleibende Anfangszahlen funktioniert.

  • Excel Formel Zahl: Eine andere Möglichkeit besteht darin, Excel-Formeln zu verwenden. Zum Beispiel:

    =VERKETTEN(LINKS(A1;LÄNGE(A1)-LÄNGE(A2));A2)

    Diese Formel übernimmt die gewünschten Teile der Zahl.


Praktische Beispiele

  1. Beispiel mit einfachem Zähler:

    • A1: 1234567
    • A2: 800 → Ergebnis in A2: 1234800
    • A3: 90 → Ergebnis in A3: 1234890
  2. Beispiel mit mehreren Zählern:

    • Du kannst den VBA-Code anpassen, um ihn auf mehrere Bereiche anzuwenden. Ändere den Range-Bereich im Code zu Range("A2:C20"), um die Spalten A, B und C abdecken.

Tipps für Profis

  • Erweiterungsmöglichkeiten: Du kannst den VBA-Code so anpassen, dass er auch andere Spalten oder Zeilen berücksichtigt. Achte darauf, den Code entsprechend zu ändern.

  • Debugging: Wenn der Code nicht wie gewünscht funktioniert, nutze den Debugger in VBA, um Schritt für Schritt zu sehen, wie die Variablen sich verändern.

  • Datenvalidierung: Füge eine Datenvalidierung hinzu, um sicherzustellen, dass nur Zahlen eingegeben werden können.


FAQ: Häufige Fragen

1. Kann ich den Code auf mehrere Zähler anwenden? Ja, du kannst den Range-Bereich im VBA-Code erweitern, um mehrere Zähler zu berücksichtigen, z.B. Range("A2:C20").

2. Was tun, wenn Excel die letzte Zahl in 0 ändert? Überprüfe deinen VBA-Code auf Fehler, insbesondere in den Bedingungen, die das Verhalten steuern. Ein "Not" an der falschen Stelle kann Probleme verursachen.

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