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

Spalte prüfen und Wert ändern

Spalte prüfen und Wert ändern
30.04.2009 10:39:56
Walter
Guten Morgen,
ich habe eine Datenbank in der ist in der "Spalte F" ab Zeile 6 Ende unbekannt ein
Zahlwert vorhanden z.b. 1W+28.
Es sollte die Spalte überprüft werden welche Zellenwerte in der Spalte mit einem
+ Zeichen versehen sind, das + Zeichen sollte dann entfernt werden.
mfg walter mb

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
1.markieren dann Strg+H suche + Ersezen leerlassen
30.04.2009 10:50:01
Matthias
oT
sollte Ersetzen heißen ... oT
30.04.2009 10:50:50
Matthias
AW: Spalte prüfen und Wert ändern
30.04.2009 10:51:51
serge
Hallo Walter
ZielZellen anklicken Crtl-H (suchen-Ersetzen) Suchen nach :+ Dann Alle ersetzen drücken
Serge
Danke Matthias+ Serge
30.04.2009 11:10:27
Walter
Hallo Zusammen,
das mit der Spalte selektieren erstzen hatte ich auch schon
rausgefunden, trotzdem herzliche Dank für die Info.
Ein Makro wie z.B. könnte ich besser
gebrauchen.
mfg Walter MB
AW: Spalte prüfen und Wert ändern
30.04.2009 10:57:29
Raist10
Mal als Anregung:

Sub Ersetzen()
Dim I As Long
Dim ChkStr As String
I = 6
With ActiveSheet
Do Until .Cells(I, 6).Value = ""
If InStr(.Cells(I, 6).Value, "+") > 0 Then
ChkStr = Replace(.Cells(I, 6).Value, "+", "")
.Cells(I, 6).Value = ChkStr
End If
I = I + 1
Loop
End With
End Sub


Müsste so funktionieren.
Gib mal Rückmeldung ob es passt.
Gruß
Rainer

Anzeige
Falscher Wert zurück
30.04.2009 11:07:17
Walter
Guten Morgen Rainer,
Danke für das Beispiel.
Genau sowas brauch ich da es unterschiedliche Längen sind, so erspare ich
mir Spalte selektieren etc..
Aus 1E+77 wird 1,00E+77 sollte aber: 1E77 werden.
Kann man auch die Länge begrenzen ?
mfg Walter MB
AW: Falscher Wert zurück
30.04.2009 11:23:09
Raist10
Sag mal bitte genau was das Ergebnis der Aktion sein soll, also was stellst Du mit den Werten aus denen das "+" verschwunden ist an?
Längen begrenzen kann man schon die Frage ist nur wie und das ergibt sich aus der Antwort wofür brauchst Du die Daten.
Gruß
Rainer
aus 1E+77 soll 1E77 werden
30.04.2009 11:39:18
Walter
Hallo Rainer,
aus dem Wert 1E+77 soll 1E77 werden.
Wenn also in einer Zelle in der Spalte6 irgendwo ein "+" Zeichen
ist sollte dieses Zeichen gelöscht werden, so wie in Bearbeiten ersetzen nur als Makro.
mfg Walter MB
Anzeige
AW: aus 1E+77 soll 1E77 werden
30.04.2009 11:53:18
Raist10
Das habe ich schon verstanden. Aber die Frage ist, was willst Du danach weiter machen mit dem Ergebnis 1E77.
Dein Problem tritt auf, weil Excel automatisch 1E77 als wissenschaftlichen Wert erkennt und dann das wissenschaftliche Format anwendet. Das kann umgangen werden in dem die Formatierung des Rückgabewertes zu gewählt wird das Excel es nicht mehr automatisch erkennt.
Dafür jibbet mehrere Möglichkeiten und die unterscheiden sich in der Art wie Du die Daten weiterverwenden willst.
Einfaches Beispiel: Man kann Zahlen als Text in Excel eintragen lassen, dann versuch aber nicht mit diesen Daten noch irgendwie zu rechnen ... Excel erkennt es nicht mehr als Zahl, sondern eben als Text und mit Text wird nicht gerechnet. ;)
Gruß
Rainer
Anzeige
AW: aus 1E+77 soll 1E77 werden
30.04.2009 12:19:15
Walter
Hallo Rainer,
das ist ein Zahl mit der NICHT gerechnet wird ist nur als Bestandswert zu betrachten.
Habe auch schon festgestellt das dies ein Wissenschaftlicher Wert ist.
Habe Spalte als "Text" formatiert.
Da aber einige Zahlen mit einem + in der Mitte versehen sind, muß ich dies entfernen.
Geht das trotzdem mit Makro ?
Wie gesagt habe die Spalte schon als Text formatiert.
mfg Walter MB
AW: aus 1E+77 soll 1E77 werden
30.04.2009 15:24:46
Raist10
Wenn Dir die Ausgabe als Text reicht, dann änder das Makro auf folgt ab:

Sub Ersetzen()
Dim I As Long
Dim ChkStr As String
I = 6
With ActiveSheet
Do Until .Cells(I, 6).Value = ""
If InStr(.Cells(I, 6).Value, "+") > 0 Then
.Cells(I, 6).NumberFormat = "@"
ChkStr = Replace(.Cells(I, 6).Value, "+", "")
.Cells(I, 6).Value = ChkStr
End If
I = I + 1
Loop
End With
End Sub


Damit wird jede verarbeitete Zelle vorher mit dem Format Text belegt und damit findet keine Umwandlung in wissenschaftliche Notation statt.
Gruß
Rainer

Anzeige
Das Klappt ! -)
30.04.2009 19:57:13
Walter
Guten Abend Rainer,
danke funktioniert Super,
schönen Tanz in den Mai und schönes Wochenende,
mfg walter MB
Warum klappt es nicht für die Spalte 7 ?
30.04.2009 20:03:08
Walter
Hallo Rainer,
Spalte 6 i.o. aber wollte mal für die Spalte 7,
hatte geändert, leider keine Reaktion.
Warum ?
mfg walter mb
I = 6
With ActiveSheet
Do Until .Cells(I, 7).Value = ""
If InStr(.Cells(I, 7).Value, "+") > 0 Then
.Cells(I, 7).NumberFormat = "@"
ChkStr = Replace(.Cells(I, 7).Value, "+", "")
.Cells(I, 7).Value = ChkStr
End If
I = I + 1
Loop
End With
AW: vielleicht Suche in Cells().Text ?
01.05.2009 11:23:23
Erich
Hi Walter,
einen Fehler habe ich in deinem Code nicht gesehen. Vielleicht liegt es aber an den Daten in Spalte 7?
Wenn da Zahlen im wiss. Format stehen, wird das Plus im .Value nicht gefunden.
Dann muss man im .Text suchen. Probier mal

Option Explicit
Sub Ersetzen7()
Dim zz As Long
zz = 6
With ActiveSheet
Do Until IsEmpty(.Cells(zz, 7))
With .Cells(zz, 7)
If InStr(.Text, "+") Then
.NumberFormat = "@"
.Value = Replace(.Text, "+", "")
End If
zz = zz + 1
End With
Loop
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Noch Fehler, seltsam
01.05.2009 11:54:14
Walter
Guten Morgen Erich,
das ist aber seltsam, wenn ich dein Makro auf Spalte 6 ändere i.o.
auf Spalte 7 keine Reaktion, obwohl ich die gleiche Formarierung habe. (Text)
Ich habe auch die gleiche Zahl als Test eingegeben.
mfg walter mb
Habe Fehler gefunden aber
01.05.2009 12:10:35
Walter
Hallo Erich,
ich glaub ich habe den Fehler endeckt.
Wenn Leerzellen dazwischen sind, wird nicht weitergemacht.
Das ende der Datenbank ist immer in der Spalte A zu ermitteln,
weiß aber nicht wie es geht !
mfg walter mb
AW: bis zur letzten Zeile der Spalte A
01.05.2009 13:18:01
Erich
Hi Walter,
das könnte man z. B. so machen:

Option Explicit
Sub Ersetzen7()
Dim rngB As Range, rngC As Range, strT As String
With ActiveSheet                       ' zu bearbeitender Bereich
Set rngB = .Range(.Cells(6, 1), .Cells(.Rows.Count, 1).End(xlUp)).Offset(, 6)
End With
For Each rngC In rngB                  ' Schleife über Zellen des Bereichs
With rngC
If InStr(.Text, "+") Then
strT = Replace(.Text, "+", "")
.NumberFormat = "@"
.Value = strT
End If
End With
Next rngC
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Das wars, danke -)
01.05.2009 15:40:13
Walter
Hallo Erich,
schönen 1.Mai noch.
Danke funktioniert.
mfg walter mb
Nur Frage wegen 2 Spalten
01.05.2009 15:56:43
Walter
Hallo Erich,
wenn ich 2 Spalten oder auch mehr püfen möchte, wie geht das ?
z.b. Spalte 6+7 oder 6+ 9
mfg walter mb
AW: 2 Spalten bearbeiten
01.05.2009 17:37:19
Erich
Hi Walter,
zunächst mal Dir auch einen schönen Rest-1.-Mai!
Hier ein paar Möglichkeiten, den Bereich festzulegen:

Option Explicit
Sub Ersetzen679()
Dim lngA As Long, rngB As Range, rngC As Range, strT As String
With ActiveSheet                                      ' zu bearbeitender Bereich
lngA = .Cells(.Rows.Count, 1).End(xlUp).Row  ' Ende Sp. A
' Spalte 7
Set rngB = .Range(.Cells(6, 1), .Cells(.Rows.Count, 1).End(xlUp)).Offset(, 6)
Set rngB = .Range(.Cells(6, 6), .Cells(lngA, 6))            ' Spalte 6
Set rngB = .Range(.Cells(6, 6), .Cells(lngA, 7))            ' Spalten 6:7
Set rngB = Union(.Range(.Cells(6, 6), .Cells(lngA, 6)), _
.Range(.Cells(6, 9), .Cells(lngA, 9)))     ' Spalten 6, 9
End With
For Each rngC In rngB                  ' Schleife über Zellen des Bereichs
With rngC
If InStr(.Text, "+") Then
strT = Replace(.Text, "+", "")
.NumberFormat = "@"
.Value = strT
End If
End With
Next rngC
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Danke Erich, klappt alles !!! -)
01.05.2009 18:29:50
Walter

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige