Как выбрать отображаемые десятичные дроби в Excel - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь написать код, который берет некоторые числа из определенных ячеек и использует их значения в предложениях.Однако десятичные точки слишком велики, и я не могу их сузить

Dim export As Long

Select Case export
    Case Is >= 1000000000
        result = "Dünya … ihracatı incelenmiştir. 2018 yılı dünya ihracat değeri yaklaşık " & Range("G15").Value / 1000000000 & " milyar $'dır."
    Case Is >= 1000000
        result = "Dünya … ihracatı incelenmiştir. 2018 yılı dünya ihracat değeri yaklaşık " & Range("G15").Value / 1000000 & " milyon $'dır."
    Case Is >= 1000
        result = "Dünya … ihracatı incelenmiştir. 2018 yılı dünya ihracat değeri yaklaşık " & Range("G15").Value / 1000 & " bin $'dır."
End Select

Range("O2").Value = result

Например, значение в G15 сейчас равно 1.724.372.И результат, который я получаю:

Dünya… ihracatı incelenmiştir.2018 год - ихради дэчери яклашик 1 724372 млн. Долл. США

Я просто хочу 1,7

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Используйте функцию Round:

Dim export As Long

Select Case export
    Case Is >= 1000000000
        result = "Dünya … ihracati incelenmistir. 2018 yili dünya ihracat degeri yaklasik " & Round(Range("G15").Value / 1000000000, 1) & " milyar $'dir."
    Case Is >= 1000000
        result = "Dünya … ihracati incelenmistir. 2018 yili dünya ihracat degeri yaklasik " & Round(Range("G15").Value / 1000000, 1) & " milyon $'dir."
    Case Is >= 1000
        result = "Dünya … ihracati incelenmistir. 2018 yili dünya ihracat degeri yaklasik " & Round(Range("G15").Value / 1000, 1) & " bin $'dir."
End Select

Range("O2").Value = result

Где Round(1.2345678, 1) будет равно 1.2

0 голосов
/ 12 апреля 2019

Вы можете достичь этого используя @CLR, указанный Round(Range("G15").Value / 1000000, 1). Чтобы немного расширить это, вы можете использовать следующее

Const StartString As String = "Dünya … ihracati incelenmistir. 2018 yili dünya ihracat degeri yaklasik "
Const EndString As String = " $'dir."
Dim result As String
Dim strEndings() As Variant: strEndings = Array(" bin", " milyon", " milyar")
Dim RoundedNumber As Double
Dim t As Double
Dim i As Long

t = Range("G15").Value2

For i = 9 To 3 Step -3
    RoundedNumber = t / (1 * 10 ^ i)
    If RoundedNumber > 1 Then Exit For
Next i
If i > 0 Then
    result = Round(RoundedNumber, 1) & strEndings((i / 3) - 1)
Else
    result = t
End If

Range("O2").Value2 = StartString & result & EndString
...