2016-07-19 5 views
2

Мне нужно создать надстройку excel, которая принимает параметры верхней и нижней границ двух наборов данных. Я в настоящее время функция написана, которая выполняет правильный расчет для интеграции с использованием правила трапеции жёстко в течение диапазона с нижней границей 4 и верхней границей 13.Как создать параметризованную надстройку для книги excel

(=SUMPRODUCT(A5:A13-A4:A12;(B5:B13+B4:B12)/2) 

Мне нужно создать стенд в одиночку (возможно, надстройки), который может быть импортирован в любой файл excel и принимать два параметра (верхняя и нижняя граница вместо 4 и 13), чтобы выполнить эту функцию как можно проще.

Будет ли надстройка быть лучшим способом для этого или есть лучший способ выполнить эту задачу?

ответ

2

мои извинения; не могу комментировать, так как у меня недостаточно репутации

Как бы выполнили две функции для вашей функции? Я даже не могу заставить вашу формулу работать правильно?

Это означает, что вам просто нужно поместить свои вычисления в функцию в VBA, будучи уверенным, что это функция public, а затем сохраните этот модуль, экспортируйте его и передайте его тем, кто должен его использовать. Они будет необходимо импортировать модуль в VBA, но после того, что они просто нужно вызвать его из строки формул, набрав, как вы бы нормальная функция рабочего листа, как:

=TrapezoidFunctionByCaseyHux(

, а затем они будут попросил предоставить ячейки параметров.

Надеется, что это помогает как-то

0

Чтобы создать UDF (определенный пользователь функцию), вы также можете использовать .Net через ExcelDna framework. Итак, вы можете создать свою надстройку и распространить ее в своей организации с помощью установщика.

0

Импорт .bas файл с этим кодом в вашем редакторе Visual Basic для вашего первенствовать лист

Option Explicit 

Function Trapezoid(KnownXs As Variant, KnownYs As Variant) As Variant 

    Dim i As Integer 

    If Not TypeName(KnownXs) = "Range" Then 
     Trapezoid = "X range is not valid" 
     Exit Function 
    End If 

    If Not TypeName(KnownYs) = "Range" Then 
     Trapezoid = "Y range is not valid" 
     Exit Function 
    End If 

    If KnownXs.Rows.Count <> KnownYs.Rows.Count Then 
     Trapezoid = "Number of Xs <> Number of Ys" 
     Exit Function 
    End If 

    Trapezoid = 0 


    For i = 1 To KnownXs.Rows.Count - 1 
     Trapezoid = Trapezoid + Abs(0.5 * (KnownXs.Cells(i + 1, 1) _ 
     - KnownXs.Cells(i, 1)) * (KnownYs.Cells(i, 1) + KnownYs.Cells(i + 1, 1))) 
    Next i 

End Function 

Вы можете использовать свой выбор в качестве параметров и добавьте .bas файл на несколько книг