Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
600to604
600to604
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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...
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
Anzeige
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
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
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
Anzeige
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
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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen