У меня есть код VBA (на Sheet2), который использует публичную функцию для выполнения расчета на основе данных на Sheet1, столбец B. Затем после использования функции FillDown, чтобы получить аналогичные вычисления для остальных строк. Работает просто отлично:
Range("B2").FormulaR1C1 = "=PERSONAL.XLSB!Scoring(Sheet1!RC2)"
Range("B2:B2", "A" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown
Открытая функция проверяет ячейку и присваивает оценку в соответствии с найденным значением.
Public Function Scoring(str As String)
Dim check As Integer
check_str = 0
If str = "US" Then check_str = 1
If check_str = 1 Then Scoring = "1"
If check_str = 0 Then Scoring = "0"
End Function
Моя цель состоит в том, чтобы использовать именованные диапазоны вместо стиля формулы R1C1 , чтобы избежать каких-либо осложнений, если порядок столбцов Sheet1 будет изменен в любой точке. Я предполагаю, что есть возможности циклически проходить через именованные диапазоны, но я хотел бы, чтобы были какие-то более простые способы (не уверен, что они существуют) ... Код, который был бы простым подходом к проблеме (просто замена типа R1C1 нассылка на столбец в именованном диапазоне), не работает:
Range("B2").Formula = "=PERSONAL.XLSB!Scoring(Sheet1!Range("myRange").Columns(1))"
Range("B2:B2", "A" & Cells(Rows.Count, 1).End(xlUp).Row).FillDown
Буду признателен за любую помощь, поскольку я довольно новичок в Excel-VBA.