Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1856to1860
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
Inhaltsverzeichnis

Zahl vor erste Zahl

Zahl vor erste Zahl
27.11.2021 00:00:08
dieter
Hey all,
Hatte ein Beitrag wegen Sortieren bei Zahlen und Text.
wollte noch dazu sagen, das ich den Beitrag von Yal versucht aber nicht hinbekommen habe.
zu dem Thema habe ich mir Folgenden Code gebastelt.
Der bewirkt das ich in jeder aktiven Zelle ab A3 er mir eine 0 voran schreibt wenn dort eine Zahl mit oder ohne Text schreibt.
dadurch kann ich das sortieren einfacher gestalten.

Sub Schaltfläche7_Klicken() ' eine 0 hinzufügen
Dim cc As Range
For Each cc In Selection
cc.NumberFormat = "@"
cc.Value = "0" & cc.Value
Next cc
ActiveSheet.Range("A1").Select
End Sub
jetzt zu meinem Problem,
leider bekomme ich es nicht hin das er mir alle auf einmal nur ab A3 nach unten findet. Ich muss jede Zelle einzeln anklicken zum ändern.
7 x 0,15
7 x 0,20
18 x 0,20
9 x 0,15
9 x 0,20
10 x 0,20
9 x 0,20
9 x 0,20
10 x 0,15
10 x 0,20
8 x 0,15
10 x 0,20
10 x 0,25
8 x 0,20
11 x 0,20
11 x 0,25
7 x 0,15
12 x 0,30
was muss ich an meinem Code ändern das er mir nur Spalte A automatisch durchsucht und bei nur 1 Zahl vorne dann die 0 noch voranstellt.
Bei meinem Code geht das über alle aktiven Zellen
Es wird nach der Ausführung sortiert.
Das selbe gilt für die 0 wieder entfernen.
da habe ich folgenden Code.

Sub Schaltfläche5_Klicken() ' 0 entfernen
Dim rngZ As Range
For Each rngZ In Selection.Cells
If Left(rngZ, 1) = 0 Then rngZ = Mid(rngZ, 2)
Next rngZ
ActiveSheet.Range("A1").Select
End Sub
Geht auch über alle aktiven Zellen, soll aber auch nur in ab A3 wieder auf einmal gehen nach dem Sortieren zwecks Übersicht.
7 x 0,15
7 x 0,20
8 x 0,15
8 x 0,20
9 x 0,15
9 x 0,20
10 x 0,15
10 x 0,20
10 x 0,25
11 x 0,20
11 x 0,25
12 x 0,30
Hoffe mal das ist nicht zu viel für euch
Bedanke mich schon mal im Voraus für eure Mühe
Mfg.
dieter

26
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zahl vor erste Zahl
27.11.2021 08:38:12
Hajo_Zi
Hallo Dieter,
Du hast nur eine Zelle ausgewählt! Oder habe ich das falsch gesehen?
Dim LoLetzte as Long
Dim LoI as Long
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
For LoI=1 To LoLetztes
If Left(Cells(LoI,1), 1) = 0 Then Cells(LoI,1) = Mid(Cells(LoI,1), 2)
Next rngZ
es wird mit Deinem Code die 0 entfernt nicht hinzugefügt
GrußformelHomepage
In diesem Forum bekomme nur selten eine Mailbenachrichtigung, weitere Antworten sind zufällig.
Anzeige
AW: Zahl vor erste Zahl
27.11.2021 12:53:09
dieter
Hallo Hajo,
Erst mal Danke Deiner Antwort.
Ich glaube Du hast mich falsch verstanden.
Bei meinem Code löscht er mir nur die 0 bei Aktiver Zelle in alle Spalten.
Ich möchte aber das er mir nur in A die 0 vor der ersten Zahl löscht.
Den Fehler habe ich aber jetzt selbst gelöst.
Hast Du aber vielleicht eine Idee wie ich den Code ändern kann um ein 0 voran zu schreiben?

Sub Schaltfläche7_Klicken() ' eine 0 hinzufügen
Dim cc As Range
For Each cc In Selection
cc.NumberFormat = "@"
cc.Value = "0" & cc.Value
Next cc
ActiveSheet.Range("A1").Select
End Sub
Er soll mir nur in A wenn zB. nur eine Zahl steht eine 0 noch voran schreiben
7 x 0,20 ' hier 0
8 x 0,20 ' hier 0
15 x 0,15 ' hier keine 0
9 x 0,15 ' hier 0
9 x 0,20 ' hier 0
10 x 0,15 ' hier keine 0
10 x 0,25 ' hier keine o
12 x 0,30 ' hier keine 0
3 x 0,10 ' hier 0 hin
usw.
immer da wo Beispiel oben
Der Code müsste denke so aussehen,
suchen alle in Spalte A nur erste Zahl, da wo nur eine Zahl steht eine 0 voran schreiben
Code nach Ausführung wieder verlassen
Danke der Mühe
Mfg. Dieter
Anzeige
AW: Zahl vor erste Zahl
27.11.2021 13:03:53
Hajo_Zi
Hallo Dieter,
ich bin dann raus, da meine Beitrag nicht komplett gelesen wurde.
Das wird schon seinen Grund haben.
Ich schreibe nicht für den Papierkorn. Ich bin dann raus.
Viel Erfolg noch.
Gruß Hajo
AW: Zahl vor erste Zahl
27.11.2021 11:31:36
Beverly
Hi Dieter,

Sub NullDavorUndWeg()
Dim lngZeile As Long
For lngZeile = 3 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
If Left(Cells(lngZeile, 1), 1)  0 Then
Cells(lngZeile, 1) = "0" & Cells(lngZeile, 1).Value
Else
Cells(lngZeile, 1) = Mid(Cells(lngZeile, 1), 2)
End If
Next lngZeile
End Sub
Das Makro führt beide Optionen aus: ist die erste Zahl keine 0, dann füge eine hinzu; ist die erste Zahl eine 0, dann entferne sie.

GrußformelBeverly's Excel - Inn
PS: ich erhalte leider keine Mailbenachrichtigung mehr über eingegangene Antworten in den Threads - deshalb kann es etwas dauern, bis ich auf Beiträge antworte.
Anzeige
AW: Zahl vor erste Zahl
27.11.2021 13:02:41
dieter
Hallo Karin,
Dein Code läuft, nur er schreibt mir auch bei einer zweistelligen Zahl eine 0 voran
was da aber nicht passieren soll. nur wenn zb. 7 x 0,20 steht soll die 0 kommen das es so aussieht, 07 x 0,20
wenn zB. 10 x 0,20 darf keine 0 davor. also nicht 010 x 0,20
Trotzdem erst mal Danke für Deine Hilfe und vielleicht hast Du ja auch die ganze Lösung.
Mfg.
Dieter
AW: Zahl vor erste Zahl
27.11.2021 14:13:54
Nepumuk
Hallo Dieter,
teste mal:

Public Sub Schaltfläche7_Klicken()
Dim objCell As Range
For Each objCell In Selection
With Cells(objCell.Row, 1)
If InStr(1, .Text, "x", vbTextCompare) > 0 Then .Value = _
IIf(Len(Trim$(Split(.Text, "x", , vbTextCompare)(0))) = 1, "0", vbNullString) & .Text
End With
Next
End Sub
Gruß
Nepumuk
Anzeige
AW: Zahl vor erste Zahl
27.11.2021 14:56:52
dieter
Hey Nepumuk
Danke Deiner Antwort.
Dein Code ist fast wie meiner, aber auch ein Teil Erfolg
Mein Code:

Sub Schaltfläche7_Klicken() ' eine 0 hinzufügen in alle
Dim cc As Range
For Each cc In Selection
cc.NumberFormat = "@"
cc.Value = "0" & cc.Value
Next cc
ActiveSheet.Range("A1").Select
End Sub
Dein Code:

Public Sub Schaltfläche10_Klicken()
Dim objCell As Range
For Each objCell In Selection
With Cells(objCell.Row, 1)
If InStr(1, .Text, "x", vbTextCompare) > 0 Then .Value = _
IIf(Len(Trim$(Split(.Text, "x", , vbTextCompare)(0))) = 1, "0", vbNullString) & .Text
End With
Next
End Sub
Außer das Dein Code mir hinter der Zweistelligen Zahl nicht noch eine 0 macht
welches schon mal ein Erfolg ist.
Jetzt nur noch das er mir die Spalte A allein durchsucht und die 0 macht.
Halber Code von Dir und ein Code Teil von Karin wäre gut.
Mfg.
Dieter
Anzeige
AW: Zahl vor erste Zahl
27.11.2021 15:05:52
Nepumuk
Hallo Dieter,
mit dieser Zeile beziehe ich mich aus Spalte A und keine andere.

With Cells(objCell.Row, 1)
Daher kann ich dir nicht folgen. Was meinst du genau?
Eventuell so?

Public Sub Schaltfläche7_Klicken()
Dim objCell As Range
For Each objCell In Range(Cells(1, 1), Cells(Rows.Count, 1).End(xlUp))
With objCell
If InStr(1, .Text, "x", vbTextCompare) > 0 Then .Value = _
IIf(Len(Trim$(Split(.Text, "x", , vbTextCompare)(0))) = 1, "0", vbNullString) & .Text
End With
Next
End Sub
Gruß
Nepumuk
Anzeige
AW: Zahl vor erste Zahl
27.11.2021 16:20:51
dieter
Hey Nepumuk,
Vergiss meinen Code,
Dein Code ist nur halb von dem was ich suche.
Dein Code stellt mir die 0 in spalte A voran wenn nur eine Zahl in aktiver Zelle. Richtig.
Ich möchte das er mir die Ganze Spalte A ab A3 durchsucht und überall wo nur eine Zahl ist mir die 0 voran stellt.
Das kann in A5, A12, A23, A47 usw. sein.
Deswegen sagte ich Dein Code und der von Karin sind nur zu hälfte für mich brauchbar.
Bei Karins Code durchsucht er A, aber leider macht er mir auch eine 0 vor einer zweistelligen Zahl was ich nicht möchte.
also:
bei 7 x 0,15 eine 0 heißt 07 x 0,15
bei 10 x 0,15 keine 0 heißt weiter 10 x 0,15
usw.
hoffe war bisschen Verständnis voller von mir.
Trotzdem Danke Deiner Mühe.
Mfg.
Dieter
Anzeige
AW: Zahl vor erste Zahl
27.11.2021 16:29:38
Nepumuk
Hallo Dieter,
so?

Public Sub Schaltfläche7_Klicken()
Dim objCell As Range
For Each objCell In Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))
With objCell
If .Text Like "# x #*" Then .Value = _
IIf(Len(Trim$(Split(.Text, "x", , vbTextCompare)(0))) = 1, "0", vbNullString) & .Text
End With
Next
End Sub
Gruß
Nepumuk
AW: Zahl vor erste Zahl
27.11.2021 19:26:25
Yal
Hallo Dieter,

Public Sub Nullen_hinzufügen()
Dim Z As Range
Dim Arr
For Each Z In Selection
Arr = Split (Z.Value, "x")
Z = Format (Trim(Arr(0)), "00") & " x " & Trim(Arr(1))
Next
End Sub
Um die vorangestellten Nullen wieder los zu sein, genau dieselbe Sub aber als zweite Argument von Format nur "0" anstatt "00" verwenden.
VG
Yal
Anzeige
AW: Zahl vor erste Zahl
28.11.2021 12:34:03
dieter
Hey Nepumuk,
Dein Code ist sehr gut, genau wie ich möchte.
Vielen Dank dafür.
Jetzt nur Frage dazu noch, da in der Tabelle auch andere Leute Einträge machen,
und eventuell eine andere Schreibweise machen, heißt es zB. so 7x0,15, 7 x0,15, 7x0,15
funktioniert Dein Code nicht. Gäbe es dafür auch eine Lösung wenn es nicht zu viel Arbeit macht ?
Ansonsten lassen wir es so. Muss ich halt Unterweisung machen der Leute.
Trotzdem nochmal Danke für Deinen Code den ich erstmal so übernehmen werde.
Mfg
Dieter
schönen Advend
AW: Zahl vor erste Zahl
28.11.2021 12:38:47
Nepumuk
Hallo Dieter,
dann so:

Public Sub Schaltfläche7_Klicken()
Dim objCell As Range
For Each objCell In Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))
With objCell
If .Text Like "# x #*" Or .Text Like "#x #*" Or _
.Text Like "# x#*" Or .Text Like "#x#*" Then .Value = "0" & .Text
End With
Next
End Sub
Gruß
Nepumuk
Anzeige
AW: Zahl vor erste Zahl
28.11.2021 13:25:48
dieter
Hallo Nepumuk,
Man bist Du schnell,
Hab ganz herzlichen Dank für Deine Mühe.
So ist der Code perfekt.
Funktioniert genau wie er soll.
Ich möchte nicht unverschämt klingen oder sein,
aber hast Du auch eine Lösung die 0 wieder weg zu machen wie im Ursprung ?
Ansonsten nehme ich den Code von Karin dafür.
Hintergrund ist, wenn die 0 gemacht ist, lass ich das ganze aufsteigend sortieren und
für denn besseren Überblick soll die 0 dann wieder weg.
Nur deshalb noch die Frage.
Sonst wie gesagt wunderbar
Vielen Dank.
Mfg.
Dieter
AW: Zahl vor erste Zahl
28.11.2021 13:33:48
Nepumuk
Hallo Dieter,
so:

Public Sub Schaltfläche8_Klicken()
Dim objCell As Range
For Each objCell In Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))
With objCell
If Left$(.Text, 1) = "0" Then .Value = Mid$(.Text, 2)
End With
Next
End Sub
Gruß
Nepumuk
Kleiner Optimierungsorschlag
28.11.2021 15:04:14
Daniel
Nur mal so als Idee:
Die 0 muss hinzugefügt werden, wenn das "x" an Position 2 steht, wenn es kein Leerzeichen zwischen Ziffer und "x" gibt:

Public Sub Schaltfläche7_Klicken()
Dim objCell As Range
For Each objCell In Range(Cells(3, 1), Cells(Rows.Count, 1).End(xlUp))
With objCell
If Instr(Replace(.Value, " ", ""), "x") = 2 then .Value = "0" & .Value
End With
Next
End Sub
Gruß Daniel
AW: Kleiner Optimierungsorschlag
30.11.2021 16:32:30
dieter
Hey Daniel,
Danke Deiner Mühe, habe Dein Post übersehen.
Wollte mich trotzdem bei Dir bedanken für den Versuch.
Du hast es ein wenig missverstanden meiner Schreibweise.
aber egal jetzt, da ich jetzt habe was ich brauche.
Trotzdem Danke.
Mfg.
Dieter
AW: Zahl vor erste Zahl
27.11.2021 19:25:57
Beverly
Hi Dieter,
dann so:

Sub NullDavorUndWeg()
Dim lngZeile As Long
For lngZeile = 3 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
If Left(Cells(lngZeile, 1), 1) = 0 Then
Cells(lngZeile, 1) = Mid(Cells(lngZeile, 1), 2)
Else
If Len(Split(Cells(lngZeile, 1), " ")(0)) = 1 Then
Cells(lngZeile, 1) = "0" & Cells(lngZeile, 1).Value
End If
End If
Next lngZeile
End Sub
Das Marko führt ebenfalls beide Operationen aus.

GrußformelBeverly's Excel - Inn
PS: ich erhalte leider keine Mailbenachrichtigung mehr über eingegangene Antworten in den Threads - deshalb kann es etwas dauern, bis ich auf Beiträge antworte.
AW: Zahl vor erste Zahl
28.11.2021 13:07:17
dieter
Hallo Karin,
Vielen Dank für den Code, der Funktioniert genauso wie der von Nepumuk.
Aber auch bei Deinem Code das selbe, wenn zB. in der Zelle die Eingabe anders gemacht wird
funktioniert er nicht mit der 0.
Schreibweise ? 7x 0,15, 7x0,15 geht der Code nicht.
Trotzdem Danke für Deine Arbeit, u. vielleicht hast du dafür auch noch Lösung.
Mfg.
Dieter
schönen 1. Advent
AW: Zahl vor erste Zahl
28.11.2021 13:54:25
Yal
Hallo Dieter,
Da Du noch auf der Suche nach einer Lösung bist, erlaube ich mir, auf meiner -wohl übersehenen- Antwort aufmerksam zu machen:
https://www.herber.de/forum/archiv/1856to1860/1858766_Zahl_vor_erste_Zahl.html#1858899
Mindest Voraussetzung für meine vorgeschlagene Lösung ist, dass ein "x" und davor ein Zahl vorhanden sind. Rest egal.
Rückkehr-Funktion ist auch drin.
VG
Yal
AW: Zahl vor erste Zahl
29.11.2021 13:59:59
dieter
Hey Yal,
Danke Deiner Ausführung, sorry hab ich übersehen.
Funktioniert, aber ist leider nicht das was ich suche und brauche.
Bis jetzt der beste Code von Nepumuk und Karin.
Trotzdem danke Deiner Mühe.
Mfg.
Dieter
AW: Zahl vor erste Zahl
28.11.2021 14:49:33
Beverly
Hi Dieter,
man kann immer nur davon ausgehen, welche bzw. wie die Daten bereitgestellt werden. Liste also bitte ALLE Schreibweise-Varianten auf, die vorkommen können und wie das Ergebnis (wann 0 davor und wann nicht) jeweils aussehen soll.

GrußformelBeverly's Excel - Inn
PS: ich erhalte leider keine Mailbenachrichtigung mehr über eingegangene Antworten in den Threads - deshalb kann es etwas dauern, bis ich auf Beiträge antworte.
AW: Zahl vor erste Zahl
29.11.2021 13:49:35
dieter
Hey Karin,
Ich hatte in meinem Post Dir auch geschrieben wie die Schreibweise sein könnte, hast bestimmt über sehen.
Hier nochmal falsche Schreibweise ohne 0 davor
7x 0,15
7 x0,15
7x0,15
richtige Schreibweise mit 0 davor
7 x 0,15
Vielen Dank Deiner Mühe
Mfg.
dieter
AW: Zahl vor erste Zahl
29.11.2021 15:32:50
Yal
Hallo Dieter,
sorry, ich hatte deine Anforderung nicht zwischen den Zeilen gelesen.
Anbei die Volle Lösung:
Bereich markieren, Alt+F8 drücken, Makro "Selektion_sortieren" auswählen und laufen lassen.
Was passiert dann? Die Nullen werden hinzugefügt, es wird sortiert, die Nullen werden rausgenommen.

Public Sub Selektion_sortieren()
Nullen_setzen "00"
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add Key:=Selection.Range("A1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.SetRange Selection
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Nullen_setzen "0"
End Sub
Private Sub Nullen_setzen(Optional strNullen = "00")
Dim Z As Range
Dim Arr
For Each Z In Selection
Arr = Split(Z.Value, "x")
Z = Format(Trim(Arr(0)), strNullen) & " x " & Trim(Arr(1))
Next
End Sub
Wie vorher erwähnt (und nicht mal zwischen den Zeilen): einmal mit "00" abrufen, einmal mit "0".
VG
Yal
AW: Zahl vor erste Zahl
29.11.2021 16:04:41
Beverly
Hi Dieter,
du hattest geschrieben: Schreibweise ? 7x 0,15, 7x0,15. Daraus habe ich schlussfolgern müssenn, dass auch "?" vorkommen kann - folglich meine Bitte um genaue Angaben, welche Schreibweisen vorkommen können...
Nehme ich - nach deinem letzten Beitrag - richtig an, dass auch jeweils ein Leerzeichen vor und nach x eingefügt werden soll falls keins vorhanden ist?

Sub NullDavorUndWeg()
Dim lngZeile As Long
Dim strText
For lngZeile = 3 To IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
If Left(Cells(lngZeile, 1), 1) = 0 Then
Cells(lngZeile, 1) = Mid(Cells(lngZeile, 1), 2)
Else
strText = Split(Cells(lngZeile, 1), "x")
If Len(Trim(Split(Cells(lngZeile, 1), "x")(0))) = 1 Then
strText(0) = "0" & Trim(strText(0))
strText(1) = Trim(strText(1))
Cells(lngZeile, 1) = Join(strText, " x ")
End If
End If
Next lngZeile
End Sub

GrußformelBeverly's Excel - Inn
PS: ich erhalte leider keine Mailbenachrichtigung mehr über eingegangene Antworten in den Threads - deshalb kann es etwas dauern, bis ich auf Beiträge antworte.
AW: Zahl vor erste Zahl
30.11.2021 16:24:12
dieter
Hallo Yal, Hallo Karin,
Sorry Karin, werde beim nächsten mal besser schreiben wie gemeint ist. Das ? sieht natürlich an der stelle bisschen blöde aus.
Aber Du hast dafür richtig angenommen und es geht.
Yal, danke der Mühe, Du hast direkt eine Sortiert Funktion eingebaut die ich an der Stelle noch nicht brauche weil vorher noch andere Sachen gemacht werden.
Aber trotzdem Danke Deiner Mühe da der Rest auch klappt.
Ich danke euch für die Hilfe, es klappt wunderbar so wie ich es mir vorgestellt habe.
Da ich jetzt 3 Code zur Verfügung habe, habe ich frei Auswahl. Denn der von Nepumuk geht auch.
Vielen lieben Dank an euch dreien der Hilfe.
Mfg.
Dieter

307 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige