Вы можете получить текущий выбранный диапазон, используя
Application.Selection.Address
. Это даст вам значение диапазона (свойство Selection возвращает объект Range), которое будет выглядеть примерно как "$B$4:$J$20
".
Учитывая, что теперь у вас есть диапазон для работы, вы можете выполнять итерацию по каждому столбцу, используя что-то вроде:
For Each col In userSelectedRange.Columns
...
Next
Свойство Columns снова возвращает объект Range, который вы можете либо повторить, либо выполнитьдругие вычисления (ваши точные потребности не слишком понятны из вашего вопроса).
Чтобы опубликовать вычисленный результат на две строки выше каждого столбца (например, промежуточный итог или аналогичный), попробуйте использовать функцию смещения:
Cells.Offset(-2, 0)
Если вы сможете предоставить больше подробностей относительно того вида вычислений, который вам нужен, я могу добавить больше подробностей о том, как вы этого добились.