|
Microsoft Office Application Development
|
|
Getallen formatteren zodat alleen significante cijfers worden getoondInleidingBij het analyseren van meetresultaten is het gebruikelijk om deze bij rapportage weer te geven met het juiste aantal significante cijfers. Dit aantal hangt meestal af van de nauwkeurigheid van het hele meetproces (monstername, monsterpreparatie, analyse, omrekening naar gewenste eenheden). Hoewel Excel verschillende methoden kent om getallen af te ronden (via functies of via het getalsformaat van de cel), is er geen methode om eenvoudig getallen van verschillende orde grootte af te ronden:
Natuurlijk zou gebruik gemaakt kunnen worden van wetenschappelijke notatie (zie
figuur 1), maar mijn ervaring heeft geleerd dat veel mensen (inclusief managers)
moeite hebben met het interpreteren van getallen als 1.23E-1, terwijl men 0,123
wel kan bevatten. Figuur 1: Cel Eigenschappen, Getal, wetenschappelijke notatie Om deze reden heb ik onderstaande functie geschreven, welke ale getallen in de selectie omzet naar het aantal opgegeven significante cijfers: Sub RoundToDigits()Dim rCell As Range Dim dDigits As Double Dim iRoundDigits As Integer Dim sFormatstring As String Dim iCount As Integer Dim vAnswer As Variant Dim rRangeToRound As Range On Error Resume Next Set rRangeToRound = Selection If rRangeToRound Is Nothing Then Exit Sub vAnswer = InputBox("How many digits?", "Rounding function") If TypeName(vAnswer) = "Boolean" Then Exit Sub If vAnswer = "" Then Exit Sub iRoundDigits = Application.Max(1, vAnswer) On Error GoTo 0 For Each rCell In rRangeToRound.Cells If IsNumeric(rCell.Value) And rCell.Value <> "" Then sFormatstring = "0" If rCell.Value = 0 Then dDigits = 3 Else dDigits = Log(Abs(Round(rCell.Value, iRoundDigits - 1 _ - Log(Abs(rCell.Value)) / Log(10)))) / Log(10) dDigits = -Int(dDigits) + iRoundDigits - 1 dDigits = Application.Min(Len(Abs(rCell.Value)), dDigits) End If If dDigits >= 1 Then sFormatstring = sFormatstring & "." & String(dDigits, "0") ElseIf dDigits < 0 Then sFormatstring = sFormatstring & "." & String(iRoundDigits - 1, "0") _ & "E+00" End If rCell.NumberFormat = sFormatstring End If Next End Sub Listing 1: Code om het formaat van getallen zodanig te wijzigen zodat alleen significante cijfers worden getoond. CommentaarNu je het einde van dit artikel hebt bereikt, zou ik om je mening willen vragen. Wat vond je ervan? Klik hier om mij een mailtje te sturen met je opmerkingen en suggesties. | ||||||||||||||||||||||
|
Use the contact page to issue
questions or comments about this website. |