Используйте функцию Round в функции VBA - PullRequest
1 голос
/ 26 марта 2019

Эта функция возвращает несколько совпадений поиска в одной ячейке:

Function NBlookup(lookupval, lookuprange As Range, indexcol As Long)
Dim result As String
Dim x As Range

result = ""
For Each x In lookuprange
    If x = lookupval Then
        result = result & " " & x.Offset(0, indexcol - 1) & x.Offset(0, 5)
    End If
Next x
NBlookup = result
End Function

Следующая часть объединяет его с числовым значением:

& x.Offset(0, 5)

Я хочу округлить значение: if & x.Offset(0, 5) >= 5 then округлить, в противном случае округлить вниз.

Как я могу это реализовать?

Ответы [ 2 ]

3 голосов
/ 26 марта 2019

Просто используйте функцию Round(), например: Round(x.Offset(0, 5), 0)

После перечитывания вашего поста кажется, что вы пытаетесь округлить вверх или вниз, около 5, а не 0,5
Если это так, я сделаю что-то вроде этого: Round(x.Offset(0, 5)/10, 0)*10

Public Function NBlookup(lookUpVal, lookUpRange As Range, indexCol As Long)
    Dim Result As String
    Dim x As Range

    Result = ""
    For Each x In lookUpRange
        If x = lookUpVal Then
            Result = Result & " " & x.Offset(0, indexCol - 1) & Round(x.Offset(0, 5), 0)
        End If
    Next x
    NBlookup = Result
End Function

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

Я также объявил вашу функцию как Public, чтобы вы могли напрямую использовать ее в ячейках Excel. В любом случае, рекомендуется объявлять область действия (Public, Private, Friend) ваших функций или подпрограмм. ;)

1 голос
/ 26 марта 2019

Попробуйте заменить & x.Offset(0, 5) на

& Application.WorksheetFunction.Round(x.Offset(0, 5),0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...