Как использовать форматированный текст R1C1 в формуле

Чтобы получить динамические формулы для разработки через VBA, мне пришлось использовать INDIRECT (ADDRESS (теперь я застрял с несколькими десятками формул, которые выглядят так:

=INDIRECT(ADDRESS(37,10),1)*(INDIRECT(ADDRESS(37,7),1)+(INDIRECT(ADDRESS(69,10),1)*INDIRECT(ADDRESS(77,10),1))+(INDIRECT(ADDRESS(70,10),1)*INDIRECT(ADDRESS(78,10),1))+(INDIRECT(ADDRESS(71,10),1)*INDIRECT(ADDRESS(79,10),1))+(INDIRECT(ADDRESS(72,10),1)*INDIRECT(ADDRESS(80,10),1))+(INDIRECT(ADDRESS(73,10),1)*INDIRECT(ADDRESS(81,10),1))+(INDIRECT(ADDRESS(74,10),1)*INDIRECT(ADDRESS(82,10),1))+(INDIRECT(ADDRESS(75,10),1)*INDIRECT(ADDRESS(83,10),1))) 

Я не могу использовать эти формулы с Solver, потому что это слишком много для Solver. Когда я вручную переводим формулы в формат «A1», тогда работает Solver. Мне нужно автоматизировать перевод, потому что это должен быть шаблон.

Я надеялся, что замена «INDIRECT (ADDRESS» на «Cells» может работать. Не повезло. Есть ли выражение, которое я могу использовать, которое может заменить «INDIRECT (ADDRESS», который будет читать формат R1C1? Или у вас есть лучшее решение?

Благодаря!

  r = 0 Do Until r = 6 i = 0 Do Until i = DCShipFrom Cells(70 + r, 7 + DCShipFrom + i).Select Selection.FormulaR1C1 = "=IF(AND(INDIRECT(ADDRESS(" & 67 & "," & 7 + DCShipFrom + i & "),1)<=" & "INDIRECT(ADDRESS(" & 70 + r & "," & 6 & "),1)," & "INDIRECT(ADDRESS(" & 67 & "," & 7 + DCShipFrom + i & "),1)>" & "INDIRECT(ADDRESS(" & 69 + r & "," & 6 & "),1)),1,0)" i = i + 1 Loop r = r + 1 Loop enter code here 

    Попробуйте это, он делает формулы динамическими, но намного проще:

     For r = 0 To 6 For i = 0 To DCShipFrom With ActiveSheet .Cells(70 + r, 7 + DCShipFrom + i).Formula = "=IF(AND(" & .Cells(67, 7 + DCShipFrom + i).Address(0, 0) & "<=" & .Cells(70 + r, 6).Address(0, 0) & "," & .Cells(67, 7 + DCShipFrom + i).Address & " >" & .Cells(69 + r, 6).Address & "),1,0)" End With Next i next r 

    Или, если вы хотите R1C1:

     For r = 0 To 6 For i = 0 To DCShipFrom With ActiveSheet .Cells(70 + r, 7 + DCShipFrom + i).FormulaR1C1 = "=IF(AND(R" & 67 & "C" & 7 + DCShipFrom + i & " <= R" & 70 + r & "C" & 6 & ",R" & 67 & "C" & 7 + DCShipFrom + i & " > R" & 69 + r & "C" & 6 & "),1,0)" End With Next i Next r 

    С ADDRESS(37, 10) возвращающим $ J $ 37,

     INDIRECT(ADDRESS(37, 10), 1) 'or INDIRECT(ADDRESS(37,10)) since xlA1 is default 

    С помощью ADDRESS(37, 10, 1, 0) возвращающего R37C10,

     INDIRECT(ADDRESS(37, 10, 1, 0), 0) 'the zeroes denote xlR1C1 addressing 

    Возможно, вы захотите рассмотреть одно из следующих:

     INDEX($J:$J, 37) INDEX($A:$Z, 37, 10) 

    INDEX является энергонезависимым. И КОСВЕННЫЕ, и АДРЕС являются неустойчивыми.

    Вы можете использовать INDIRECT с форматом R1C1, добавив FALSE в конце вашего косвенного оператора и чтобы сделать его динамическим, вы делаете переменные строки и столбца, например

     INDIRECT("R" & myrow & "C" & mycol,FALSE) 
    Interesting Posts

    HowTo Скопировать данные двойным щелчком по определенной ячейке одного листа на другой лист

    создание и обновление листа excel

    Создание кросс-проектной ленты для приложений VSTO

    Разбиение строки в VBA с использованием RegEx

    Сводная таблица и агрегация по нескольким аргументам

    Как изменить размер окна комментариев по умолчанию в Excel?

    Microsoft Excel предотвращает отключенные элементы

    Текст VBA в столбцы с разделителями ""

    Как установить переменную пользовательского типа в эквивалент VBA?

    Изменение и создание xlsx-файлов с помощью Python, в частности форматирование отдельных слов предложения eg в ячейке

    Создайте раскрывающийся список флажков с использованием EPPlus

    Excel: сообщение VBA и refreshall закончилось?

    Диапазоны переменных Excel при создании диаграммы

    OleDbDataAdapter: Чтение CSV Некоторые данные первой строки отсутствуют

    Условное форматирование Excel 2016 не работает

    Давайте будем гением компьютера.