VBA Script für signifikante Stellen

11/04/2008 - 13:07 von Thomas Bahls | Report spam
Hallo,

ich habe gerade ein sehr spezielles Problem und bin mir gar nicht ganz
sicher, ob ich hier in der richtigen NG bin.


Ich möchte in einer Excel Tabelle (Excel 2003) in einem markierten Bereich
die "signifikanten Stellen" auf 3 anpassen per Script.


Also zb:
33322 hat 0 sig. Stellen und bleibt
3.22 hat 3 sig Stellen und bleibt
0.0022332 hat 5 sig. Stellen und wird gekürzt auf 3 sig Stellen zu 0.00223
2.322323 hat 7 sig. Stellen und wird gekürzt auf 2.32 Stellen
2.3 hat 2 sig Stellen und muss im Format aus zwei Nachkommastellen
erweitert werden, so dass 3 sig. Stellen erhalten werden
usw.



Ich habe hier genau das Problem gefunden, nur dass hier jemand statt auf 3
sig. Stellen 4 sig Stellen haben will
http://www.office-loesung.de/ftopic..._0_asc.php

Das Script hier sieht so aus:

Sub Beschneiden()

Dim i As Integer
Dim sngWert As Single
Dim lngLR As Long

lngLR = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count,
1).End(xlUp).Row, Rows.Count)

For i = 1 To lngLR

sngWert = Cells(i, 1).Value

Select Case sngWert

Case Is > 1000
Cells(i, 2).Value = Int(Cells(i, 1).Value)

Case Is < 1
Cells(i, 2).Value = Cells(i, 1).Value

Case Is < 1000
Cells(i, 2).Value = Left(Cells(i, 1), 5)

End Select

Next i

End Sub
-


Ich habe leider keine Ahnung von VBA. Das Script funktioniert in meiner
Tabelle so leider nicht. Es scheint nur in Spalte A zu funktionieren. Kann
mir jemand sagen, wie ich das Script anpassen muss, damit es einen
ausgewàhlten Bereich bearbeitet und wie ich es von 4 auf 3 sig. Stellen
anpassen muss? (letzteres ist wohl das geringere Problem)



Das wàre wirklich super


Vielen Dank schonmal

Gruß Thomas
 

Lesen sie die antworten

#1 stefan onken
11/04/2008 - 13:58 | Warnen spam
hallo Thomas,
teste mal dies (es wird nur die Darstellung der Zahl in der Tabelle
angepasst, der Wert selber nicht veràndert. Ich nehme an, dass das so
sein soll?)
im VBA-Editor (Alt+F11) auf Einfügen/Modul
in das große Codefenster diesen Code kopieren

Sub DreiZàhlendeStellen()
With Selection
For i = 1 To .Cells.Count
sngWert = .Cells(i).Value
Select Case sngWert
Case Is >= 100
.Cells(i).NumberFormat = "0"
Case Is >= 10
.Cells(i).NumberFormat = "0.0"
Case Is >= 1
.Cells(i).NumberFormat = "0.00"
Case Is >= 0.1
.Cells(i).NumberFormat = "0.000"
Case Is >= 0.01
.Cells(i).NumberFormat = "0.0000"
End Select
Next i
End With
End Sub


ggfls noch erweitern für >=0.001 oder welche rausnehmen (>=1, wenn
Zahlen zwischen 1 und 10 sowieso immer 3 zàhlende Stellen haben).
Editor beenden. Markiere in der Tabelle den betreffenden Bereich und
gehe dann auf Extras/Makro/Makros. Da findest du den Eintrag
DreiZàhlendeStellen. Es ist aber möglich, das Makro zB über einen
button oder einen Tastatur-shortcut zu starten.


Gruß
stefan

On 11 Apr., 13:07, "Thomas Bahls" wrote:
Hallo,

ich habe gerade ein sehr spezielles Problem und bin mir gar nicht ganz
sicher, ob ich hier in der richtigen NG bin.

Ich möchte in einer Excel Tabelle (Excel 2003)  in einem markierten Bereich
die "signifikanten Stellen" auf 3 anpassen per Script.

Also zb:
33322 hat 0 sig. Stellen und bleibt
3.22  hat 3 sig Stellen und bleibt
0.0022332 hat 5 sig. Stellen und wird gekürzt auf 3 sig Stellen zu 0.00223
2.322323 hat 7 sig. Stellen und wird gekürzt auf 2.32 Stellen
2.3  hat 2 sig Stellen und muss im Format aus zwei Nachkommastellen
erweitert werden, so dass 3 sig. Stellen erhalten werden
usw.

Ich habe hier genau das Problem gefunden, nur dass hier jemand statt auf 3
sig. Stellen 4 sig Stellen haben willhttp://www.office-loesung.de/ft..._0_asc.php

Das Script hier sieht so aus:

Sub Beschneiden()

Dim i       As Integer
Dim sngWert As Single
Dim lngLR As Long

lngLR = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count,
1).End(xlUp).Row, Rows.Count)

For i = 1 To lngLR

sngWert = Cells(i, 1).Value

Select Case sngWert

  Case Is > 1000
    Cells(i, 2).Value = Int(Cells(i, 1).Value)

  Case Is < 1
    Cells(i, 2).Value = Cells(i, 1).Value

  Case Is < 1000
    Cells(i, 2).Value = Left(Cells(i, 1), 5)

End Select

Next i

End Sub
-

Ich habe leider keine Ahnung von VBA. Das Script funktioniert in meiner
Tabelle so leider nicht. Es scheint nur in Spalte A zu funktionieren.   Kann
mir jemand sagen, wie ich das Script anpassen muss, damit es einen
ausgewàhlten Bereich bearbeitet und wie ich es von 4 auf 3 sig. Stellen
anpassen muss? (letzteres ist wohl das geringere Problem)

Das wàre wirklich super

Vielen Dank schonmal

Gruß Thomas

Ähnliche fragen