Hallo ihr Lieben,
ich habe von Makros leider nur wenig Ahnung!
Mein Problem ist folgendes:
Ich habe eine Spalte mit Zahlen und einzelnen Buchstaben,
was ich jetzt machen möchte:
Jede Zahl die bis vor der Zelle mit dem Buchstaben C steht, soll eine NULL an den Anfang der Zahl Geschrieben bekommen,
alle anderen Zahlen sollen so bleiben.
BSP:
A
1 A
2 123123
3 67
4 C
5 78
Ergebnis= in der Spalte B würde dann stehen: A, 0123123, 067, C, 78.
Da ich mal so gar keine AHnung habe, weiß ich nicht einmal wie ich was deklarieren muss. Aber wenn mir einer mit der Schleife helfen würde, wäre ich schon sehr dankbar!
Viele Grüße
Da ich mal so gar keine AHnung habe, weiß ich nicht einmal wie
ich was deklarieren muss. Aber wenn mir einer mit der Schleife
helfen würde, wäre ich schon sehr dankbar!
wenn du den vba-editor offen hast, dann gib da mal „for“ ein, markiere das und drück F1. dann bekommst du ein beispiel für eine schleife, mit der du dein problem lösen kannst.
weiterhin musst du noch:
-
die endbedingung deiner schleife bestimmen (wie oft soll sie durchlaufen?)
-
die jeweilige zelle auslesen
-
die null vorne dran schreiben
-
alles zurück in die zelle
ohne Makro mit Hilfsspalte
Jede Zahl die bis vor der Zelle mit dem Buchstaben C steht,
soll eine NULL an den Anfang der Zahl Geschrieben bekommen,
alle anderen Zahlen sollen so bleiben.
BSP:
A
1 A
2 123123
3 67
4 C
5 78
Ergebnis= in der Spalte B würde dann stehen: A, 0123123, 067,
C, 78.
Hallo,
auf die schnelle gehts auch mit einer Hilfsspalte mit der Formel in Spalte C:
=WENN(B2=„C“;„0“&B1;B1)
Formel runterkopieren und dann die Spalte B mit den Werten ersetzen.
Frage: Wieso als Ergebnis in Spalte B 0123123 ?
MfG
Hallo 
Danke.
Ja ich habe auch schon so gut wie alles mit Formeln hintelegt. Problem ist nur, dass ich eine automatisierte Form haben möchte. Und ich werde in dieses Datenblatt jedes mal neue Werte (verschieden angeordnet) reinkopieren, und weil nicht jedes mal manuell etwas runterkopiert etc werden muss, will ich gerne ein Makro haben 
Hallo Jens,
das versuche ich schon die ganze Zeit mit der Excel-Hilfe.
Mir ist auch klar wie der Ablauf aussehen soll, komme aber an einigen Stellen einfach nicht weiter.
BSP:
Dim actBranchenausfallzeitreihenPlan As Workbook
Dim actInsolvenzenPlan As Worksheet
Dim actLineInsolvenzen As Long
Set actBranchenausfallzeitreihenPlan = ActiveWorkbookSet actInsolvenzenPlan = actInsolvenzen.Sheets
actInsolvenzenPlan.Activate
For actLineInsolvenzen = 4 To 100000
if actInsolvenzenPlan.Cells(
…
jetzt komme ich nicht weiter!
Hallo Jens,
das versuche ich schon die ganze Zeit mit der Excel-Hilfe.
Mir ist auch klar wie der Ablauf aussehen soll, komme aber an einigen Stellen einfach nicht weiter.
BSP:
Dim actBranchenausfallzeitreihenPlan As Workbook
Dim actInsolvenzenPlan As Worksheet
Dim actLineInsolvenzen As Long
Set actBranchenausfallzeitreihenPlan = ActiveWorkbookSet actInsolvenzenPlan = actInsolvenzen.Sheets
actInsolvenzenPlan.Activate
For actLineInsolvenzen = 4 To 100000
if actInsolvenzenPlan.Cells(
…
jetzt komme ich nicht weiter!
Irgendwie klappt es dennoch nicht:
Sub Korrektur_Code()
Dim actBranchenausfallzeitreihenPlan As Workbook
Dim actInsolvenzenPlan As Worksheet
Dim actLineInsolvenzen As Long
Set actBranchenausfallzeitreihenPlan = ActiveWorkbook(„Makro…Branchenausfallzeitreihe…“)
Set actInsolvenzenPlan = actInsolvenzen.Sheets(„Insolvenzen“)
actInsolvenzenPlan.Activate 'Arbeitsblatt öffnen
For actLineInsolvenzen = 4 To 100000 'Schleife von Zeile 4 zu Zeile 100000
if actInsolvenzenPlan.Cells(actLineInsolvenzen, 1) = C 'wenn in der aktuellen Zelle, die ab einschließlich Zeile 4 beginngt ein C steht
then ’ dann beende Schleife
Else
if actInsolvenzenPlan.Cells (actLineInsolvenzen, 1) = Integer 'andernfalls prüfe ob eine Zahlsteht
then actInsolvenzenPlan.Cells (actLineInsolvenzen, 1)= 0 + actInsolvenzenPlan.Cells (actLineInsolvenzen, 2) 'wenn ja dann fühe eine 0 und den Zelleninhalt in Spalte 2(B)hinzu
End If
actLineInsolvenzen = actLineInsolvenzen + 1
End If
End Sub
Nachfrage
Ich habe eine Spalte mit Zahlen und einzelnen Buchstaben,
was ich jetzt machen möchte:
Jede Zahl die bis vor der Zelle mit dem Buchstaben C steht,
soll eine NULL an den Anfang der Zahl Geschrieben bekommen,
alle anderen Zahlen sollen so bleiben.
Hallo Tschejtx,
das Makro soll die Spalte von oben nach unten durchlaufen und allen Zahlen vornedran eine Null verpassen( die werden dann zu Text) bis in einer Zelle ein „C“ auftaucht, ist das so korrekt?
Gruß
Reinhard
Hallo Reinhard,
genau. Das Makro soll alle Zahlen mit einer Null am Anfang versehen bis zu der Zelle wo Ein großes C auftaucht. der Datensatz besteht mal aus einzelnen Buchstaben mal aus normalen Zahlen (die aber linksbündig angezeigt werden)
Sinn des Ganzen ist, dass ich eine automatisierte Version brauche, mit der ich dann verschiedenste Datensätze reinkopieren kann ohne jedes mal den Datensatz anpassen zu müssen. Ich brauche alle Zahlen in dem „Linksbündigen“ Format. Weil ich später andere Listen habe mit dessen Hilfe ich mit „sverweisen“ die Artikelnummern zuordnen kann. und weil ich in beiden Datensätzen diese Artikel brauche müssen auch die aufbereiteten Zahlen weiterhin Artikel bleiben, da ich sonst keine Sverweise anwenden kann.
Ich hoffe, das ist jetzt ein wenig verständlicher geworden? Danke für die Hilfe 
Jede Zahl die bis vor der Zelle mit dem Buchstaben C steht,
soll eine NULL an den Anfang der Zahl Geschrieben bekommen,
alle anderen Zahlen sollen so bleiben.
Hallo T,
Sub Nuller()
Dim Zei As Long, ZeiC As Long
With Worksheets("Tabelle1")
On Error Resume Next
ZeiC = Application.Match("C", .Columns(1), 0)
If Err.Number = 0 Then
For Zei = 1 To ZeiC - 1
If IsNumeric(.Cells(Zei, 1).Value) And .Cells(Zei, 1).Value "" Then
If Left(.Cells(Zei, 1).Value, 1) "0" Then
.Cells(Zei, 1).Value = "'0" & CStr(.Cells(Zei, 1).Value)
End If
End If
Next Zei
Else
MsgBox "Kein C gefunden in Spalte A."
End If
End With
End Sub
Gruß
Reinhard
Morgen,
hier mal ein Versuch:
Sub Null_anfuegen()
Dim Zeile As Integer, letzteZeile As Integer
letzteZeile = Sheets(„Tabelle1“).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Zeile = 1
Do
If IsNumeric(Cells(Zeile, 1)) = True Then
Range(„a“ & Zeile).NumberFormat = „@“
Range(„a“ & Zeile) = „0“ & Range(„a“ & Zeile)
Zeile = Zeile + 1
Else
Zeile = Zeile + 1
End If
Loop Until Cells(Zeile, 1) = „C“ Or Zeile = letzteZeile - 1
End Sub
Sub Null_anfuegen()
Dim Zeile As Integer, letzteZeile As Integer
letzteZeile =
Sheets(„Tabelle1“).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Zeile = 1
Do
If IsNumeric(Cells(Zeile, 1)) = True Then
Range(„a“ & Zeile).NumberFormat = "@"
Range(„a“ & Zeile) = „0“ & Range(„a“ & Zeile)
Zeile = Zeile + 1
Else
Zeile = Zeile + 1
End If
Loop Until Cells(Zeile, 1) = „C“ Or Zeile = letzteZeile - 1
End Sub
Hallo Brille,
dein Code kann in/ab XL 2007 zu einem Fehler führen, erkennst du warum?
Nimm mal eine leere Spalte A, schreib irgendwo ein C rein, laß den Code dann mehrmals laufen…
Gruß
Reinhard
Hallo Reinhard,
danke für deine schnelle Antwort!
Ich habe es versucht umzusetzen und erhalte zunächst Fehlermeldungen in rot bei:
-
If Error Number = 0 Then
? Wofür ist das? (wofür ist die Funktion : On Error Resume Next zuständig?!
-
If Left(.Cells(Zei, 1).Value, 1) „'0“ & Cstr(.Cells(Zei, 1).Value)
Warum wird das rot angezeigt?
Danke dir!
Hallo Reinhard,
bin jetzt davon ausgegangen, dass es keine Leerzeilen gibt und man das Makro nicht unendlich durchlaufen lässt…
So sollte es klappen:
Sub Null_anfuegen()
Dim Zeile As Integer, letzteZeile As Integer
letzteZeile = Sheets(„Tabelle1“).UsedRange.SpecialCells(xlCellTypeLastCell).Row
Zeile = 1
Do
If IsNumeric(Cells(Zeile, 1)) = True And Not Range(„a“ & Zeile) = „“ And Not Left(Range(„a“ & Zeile), 1) = „0“ Then
Range(„a“ & Zeile).NumberFormat = „@“
Range(„a“ & Zeile) = „0“ & Range(„a“ & Zeile)
Zeile = Zeile + 1
Else
Zeile = Zeile + 1
End If
Loop Until Cells(Zeile, 1) = „C“ Or Zeile = letzteZeile - 1
End Sub
Hallo Reinhard,
sorry hab mich vertippt. Jetzt ist nichts mehr rot.
Wenn ich auf Start gehe, wird
Sub Nuller()
geld angezeigt und .Columns(1) wird angeleuchtet, und auch .Cells?!
Was mache ich falsch=?
Tut mir Leid, dass ich dich hie rmit Nachrichten bombadiiere!
Es hat geklappt:
Sub Nuller()
Dim Zei As Long
Dim ZeiC As Long
Dim Anz_InsolPlan As Worksheet
On Error Resume Next
ZeiC = Apllication.Match(„C“, 1, 0)
If Err.Number = 0 Then
For Zei = 4 To ZeiC - 1
If IsNumeric(Anz_InsolPlan.Cells(Zei, 1).Value) And Anz_InsolPlan.Cells(Zei, 1).Value „“ Then
If Left(Anz_InsolPlan.Cells(Zei, 1).Value, 1) „0“ Then
Anz_InsolPlan.Cells(Zei, 1).Value = „0“ & CStr(Anz_InsolPlan.Cells(Zei, 1).Value)
End If
End If
Next Zei
Else
MsgBox „Kein C gefunden in Spalte A.“
End If
End Sub
So sieht es aus. Aber leider bekomme ich die Nachricht, dass kein C gefunden werden kann.