Страницы: 1
RSS
Не могу никак перенести формулу в функцию VBA
 
Чего только не пробовал, чтобы перенести...
Есть огромная формула, которая считает правильно (она находится в ячейке L2). В K2 - тоже самое, только с лямбдой

Суть вопроса: кто может помочь Это волшебство закинуть в функцию. Пробовал через чат с OpenAI GPT - он ругается, когда в массиве столбца B есть нулевое значение, а это обязательно и формула это предусматривает.
По сути, хочу придти к итогу:
Вставил курсор в ячейку вбил "=какаятотамфункция( массив1, массив 2) и оно считает внутри VBA

Есессно файл с примером и рабочей формулой (не VBA) прикладываю. Если есть кто добрый из старичков, кто если сразу не пошлет с этим, а хотя бы скажет, куда копать и откуда магнитик привезти - сбегаю, посмотрю, прочитаю, изучу.
Если же кто-то подкинет код - сократит мне часов 10 разбирательств. Потому что дальше я сам его проштудирую и изучу по наитию

Естественно, по правилам файлик во вложении
 
Пробуйте
Код
Function какаятотамфункция(rng1 As Range, rng2 As Range)
    Dim arr1, arr2, n As Integer, srzn As Double, tmp1 As Double, tmp2 As Double
    arr1 = rng1.Value:    arr2 = rng2.Value
    srzn = Application.AverageIf(rng2, ">0")
    For n = 1 To UBound(arr1)
        If arr1(n, 1) + arr2(n, 1) = 0 Then tmp1 = 0 Else tmp1 = arr2(n, 1)
        If tmp1 = 0 Then tmp1 = 1 Else tmp1 = Abs((arr1(n, 1) - arr2(n, 1)) / arr2(n, 1))
        If arr2(n, 1) = 0 Then tmp2 = tmp1 * srzn + tmp2 Else tmp2 = tmp1 * arr2(n, 1) + tmp2
    Next
    какаятотамфункция = tmp2 / (Application.Sum(rng2) + Application.CountIf(rng2, 0) * srzn)
End Function
Изменено: Msi2102 - 07.12.2023 10:57:10
 
Цитата
написал:
Пробуйте
Вы просто гений! Спасибо большое!
Буду дальше изучать возможности бытия...

Оно не работает, если в массивах всего по 1 значению, но я вам крайне признателен
Изменено: Wadee - 07.12.2023 19:27:07
Страницы: 1
Наверх