Discussion:
mit VBA ganzen Bereich Text zu Zahlen
(zu alt für eine Antwort)
Hans Alborg
2015-02-20 21:36:17 UTC
Permalink
Hallo...

<Excel 2007>

Heute klappt eine ABC-Schützensache bei mir nicht.

Für meine Chartmappe (die Charts funktionieren soweit) importiere ich ein
Blatt mit Daten aus einer anderen Mappe.
Die Werte dort sind aber Text, der in zahlenformierten Zellen steht.

Alle Werte stehen in Spalte B von Zeile 2 bis z.B. 6000, und haben das
Zahlenformat "##.##".
Ich hab zwar den Punkt ins Komma umgewandelt, aber es bleibt Text.

Im Netz fand ich nur Tips, den Zellinhalt mit 1 zu multiplizieren oder mit 0
zu addieren.
Das klappt auch, aber ich möchte eine 6000'er FOR-NEXT Schleife vermeiden.

--> Gibt es eine Methode für den ganzen Bereich?

Mein weiteres Vorhaben ist dann, die Zellen mit einer indirekten
Formatierung zu versehen, der 3-fach- Farbskala.
Da bekomme ich stärkere Farbwechsel, wenn Nachbarwerte sich unerwartet stark
unterscheiden.
Das versuche ich dann auszuwerten. Die Nebenspalte ist mit Zeiten gefüllt
die ich dann entsprechend markieren möchte...

Auf jeden Fall benötige ich die Zahlenwerte auch für die Diagramme. Das
Herrichten der Daten war bisher viel Handarbeit, ich versuche soviel es geht
davon mit VBA zu erledigen.

Hans
Claus Busch
2015-02-21 07:40:03 UTC
Permalink
Hallo Hans,
Post by Hans Alborg
Alle Werte stehen in Spalte B von Zeile 2 bis z.B. 6000, und haben das
Zahlenformat "##.##".
Ich hab zwar den Punkt ins Komma umgewandelt, aber es bleibt Text.
probiere es mal so:

Sub Test()
Dim LRow As Long

LRow = Cells(Rows.Count, 2).End(xlUp).Row
With Range("B1:B" & LRow)
.NumberFormat = "0.00"
.TextToColumns Destination:=Range("B1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 1), TrailingMinusNumbers:=True
End With
End Sub

oder

Sub Test2()
Dim LRow As Long

LRow = Cells(Rows.Count, 2).End(xlUp).Row
Range("M1") = 1
With Range("B2:B" & LRow)
.NumberFormat = "0.00"
Range("M1").Copy
.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
End With
End Sub
Post by Hans Alborg
Mein weiteres Vorhaben ist dann, die Zellen mit einer indirekten
Formatierung zu versehen, der 3-fach- Farbskala.
Da bekomme ich stärkere Farbwechsel, wenn Nachbarwerte sich unerwartet stark
unterscheiden.
Das versuche ich dann auszuwerten. Die Nebenspalte ist mit Zeiten gefüllt
die ich dann entsprechend markieren möchte...
Dazu musst du die Bedingungen der Formatierung auswerten.


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Claus Busch
2015-02-21 08:23:08 UTC
Permalink
Hallo Hans,
Post by Claus Busch
With Range("B1:B" & LRow)
.NumberFormat = "0.00"
du kannst als erste Anweisung auch noch:
With Range("B1:B" & LRow)
.Replace what:=".", replacement:=","

einfügen, damit in einem Rutsch auch noch der Punkt zu Komma gewechselt
wird.


Mit freundlichen Grüßen
Claus
--
Vista Ultimate / Windows7
Office 2007 Ultimate / 2010 Professional
Hans Alborg
2015-02-21 10:39:41 UTC
Permalink
Hallo Claus,

"Claus Busch" schrieb...
Post by Claus Busch
With Range("B1:B" & LRow)
.Replace what:=".", replacement:=","
einfügen, damit in einem Rutsch auch noch der Punkt zu Komma gewechselt
wird.
Ja das werd ich versuchen, mein Code ist da sehr ähnlich, nur mit weiteren
Optionen (v.Recorder) und in einer extra Unterroutine.
Muß nur einbauen, daß evtl. doch schon Kommas da sind (sonst gibt's ne
Fehlermeldung).

Der Text-zu-Zahlenteil (erste Version) funktioniert auch, so geht das in
einem Abwasch.

Beim Durchlauf der Zeile im 2.Beispiel...

.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False

ändert sich gar nichts: die Zellinhalte sollten wenigstens von links- zu
rechtsbündig wechseln.
Die danach programmierte bedingte Formatierung (Farbskala) schlägt mangels
Zahlen auch nicht an (das hatte mich gestern erst auf die Texteinträge
aufmerksam gemacht).

Zum Test hab ich in M1 dann mal eine 5 eintragen lassen, die Zelle sogar
vorher als Zahl formatiert und als letztes vor obiger Zeile ein .select
eingetragen.
Keine Reaktion (außer daß der Bereich selektiert ist)!
Post by Claus Busch
Post by Claus Busch
Post by Hans Alborg
Das versuche ich dann auszuwerten. Die Nebenspalte ist mit Zeiten gefüllt
die ich dann entsprechend markieren möchte...
Dazu musst du die Bedingungen der Formatierung auswerten.
Ja das war mir zu kompliziert und hab ich inzwischen schon anders gelöst. Es
geht darum, Änderungen im Abstand der Zeiteinträge zu erfassen und zu
markieren (auch wieder mit versch. Farben zu hinterlegen), in der
Nachbarspalte.
Dazu ziehe ich die bedingten Formate "nebenan" nicht mehr hinzu sondern
werte die Zeitdifferenzen direkt aus.
Ob das immer klappt muß ich noch anhand "aller" Datensätze prüfen. Bei
Zweien geht das allerdings schon sehr gut.

Der Sinn ist, zum Ausdünnen der Daten für das Diagramm verschiedene
Bearbeitungsweisen möglich zu machen, z.B. Anfangs (Sekundentakt) 10 Werte
addieren und wieder durch 10 teilen: ergibt einen Wert als Durchschnitt, und
von den Sekundenwerten bleibt nur noch 1/10 übrig.
Der Mittelteil besteht aus Minutenintervallen, da wird wieder anders
berechnet usw., und das richtet sich immer nach der Hintergrundfarbe...

Nicht lachen: ist halt historisch aus der Handbearbeitung entstanden :-/

Hans

Lesen Sie weiter auf narkive:
Loading...