Привет, я пытаюсь написать функцию Excel, которая принимает выбранный пользователем диапазон и выполняет различные вычисления, основываясь на столбце, в котором находится ячейка, в которую пополняется строка. На приведенном ниже снимке экрана показана настройка столбцов.
Я хочу установить AA5 равным "= myFunction ($ AA1: $ AD4)", а затем я хочу, чтобы при нажатии и перетаскивании использовалась функция автозаполнения, чтобы заполнить AB5, AC5 и AD5 одним и тем же "= myFunction ($ AA1: $ AD4) "но эта функция myFunction будет выполнять разные действия в зависимости от того, какая ячейка заполняется во время автозаполнения.
Я знаю, как это сделать в подпрограмме, в которой пользователь выбирает первую открытую ячейку AA5, и запрашивается диапазон, который следует использовать для расчетов. Я хотел бы сделать что-то вроде:
Sub CalcCells()
Dim myRange As Range
Set myRange = Application.InputBox("Select the cells you want to use...", Type:=8)
Dim numColumn As Long
For numColumn = 0 To myRange.Columns.Count - 1
Select Case numColumn
Case Is = 0
ActiveCell.Offset(0, numColumn).Formula = "=SUM(" + myRange.Columns(1) + ")"
Case Is = 1
ActiveCell.Offset(0, numColumn).Formula = "=SUMPRODUCT(" + myRange.Columns(1) + "," + myRange.Columns(2) + ")"
Case Is = 2
ActiveCell.Offset(0, numColumn).Formula = "=SUMPRODUCT(" + myRange.Columns(1) + "," + myRange.Columns(3) + ")/SUM(" + myRange.Columns(1) + ")"
Case Is = 3
ActievCell.Offset(0, numColumn).Formula = "=SUMSQ(" + myRange.Columns(4) + ")"
End Select
Next numColumn
End Sub
Так что в основном я хочу сделать именно это, но я хочу, чтобы это была функция, которая, когда я щелкаю и перетаскиваю и автозаполняю AB5: AD5, она знает, к какому столбцу соответствует ячейка, и выполняет вычисления, основанные на этом, и использует это почти как аргумент / параметр. Это также не всегда будет 4 строки, поэтому он должен быть способен приспосабливаться к различным числам строк, но .Columns должна работать с этим, пока пользователь выбирает только один и тот же тип данных.
Возможно ли это и как я могу это сделать? Спасибо за любую помощь заранее. Я много занимался поиском и не знаю, правильно ли я ищу, но не могу найти ничего, что действительно помогло бы.