Эквивалент функции Excel VALUE для VBA

Эквивалент функции Excel VALUE для VBA
Эквивалент функции Excel VALUE для VBA - theshubhamdhage @ Unsplash

Вы сказали, что B1 на самом деле будет ИНДЕКС/МАТЧ, что делает его неясным.

Если у вас есть соответствующая версия Excel, вы можете попробовать следующее (замените B1 вашей формулой ИНДЕКС/МАТЧ):

=LET(x,B1,IF(LEFT(x) = "-",VALUE(RIGHT(x,LEN(x)-1))*-1,VALUE(x)))

LET присваивает результат вашего INDEX/MATCH переменной x, а затем повторно использует его во всей формуле. x - это просто имя, и вы можете использовать любое имя, какое захотите. Я предпочитаю использовать одну букву, так как это делает всю функцию короче.

Если это не работает, и вы должны использовать VBA, то вам нужно следующее:

Function TVALUE(txt As String)
  If Left(txt, 1) = "-" Then
    'MsgBox ("Negative")
    TVALUE = Application.WorksheetFunction.NumberValue(Right(txt, Len(txt) - 1), ",", ".") * -1
  Else
    TVALUE = Application.WorksheetFunction.NumberValue(txt, ",", ".")
  End If
  
End Function

WorksheetFunction.NumberValue

Рекомендую посмотреть эти видео для лучшего погружения в вопрос:

Прикрепленное видео 1 - FIND в VBA – полный гайд по поиску в VBA (Серия VBA 26)

Прикрепленное видео 2 - VBA программирование. Курс от А до Я. Учет в Excel для магазинов


NevaDev, 5 февраля 2023 г., 13:43