Excel FormulaR1C1 и FormulaArray
У меня есть следующая таблица в Excel. Я хочу заполнить оставшуюся часть таблицы формулой массива, которую я успешно проверил в столбце B.
Код ниже autofills таблицы, но не с формулой массива, просто с формулой, поэтому он не возвращает требуемый результат. Как изменить его так, чтобы формула массива была распространена?
- Как я могу собрать SUMIFS в Excel, чтобы включить OR?
- Подсчитайте 2D-массив в пределах диапазона
- Формула Excel для сравнения двух столбцов и если найденный совпадение проверяет следующую ячейку на значение и затем возвращает результат
- excel - отпускные расходы, подведите итог, кто заплатил за то, что
- excel - сопоставить несколько ячеек в диапазоне с текстом из других ячеек и возвращать данные конкретной ячейки
Обратите внимание, что число пользователей и курсов изменяется, поэтому динамический расчет диапазона является фиксированным требованием.
Dim LastCol As Long, LastRow As Long LastCol = Cells(2, Columns.Count).End(xlToLeft).Column LastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("B3", Cells(LastRow, LastCol)).FormulaR1C1 Range("B3").FormulaR1C1
- Сумма счета, игнорирующая определенные ячейки с использованием смещения
- Как избежать ссылочных ошибок при удалении строк в другом листе
- Можно ли вернуть формулу на основе раскрывающегося элемента в excel?
- Формула Excel: Решите для X, где Y * Z% = X, Y и Z известны
- Последнее изменение формулы Excel в Excel
- Как ранжировать с использованием формулы ранга, различные критерии в excel
- Формула для вычисления в Excel
- Excel - поиск по столбцу, чтобы найти, соответствует ли текст строке count
Ответ, который работает для меня: –
Range("B3").Copy Dim LastCol As Long, LastRow As Long LastCol = Cells(2, Columns.Count).End(xlToLeft).Column LastRow = Cells(Rows.Count, "B").End(xlUp).Row 'Range ("C3:F12") Range("C3", Cells(LastRow, LastCol)).Select Selection.PasteSpecial xlPasteFormulas Application.CutCopyMode = False
Я использовал это, чтобы заставить его работать ………
Range("B3").Copy Dim LastCol As Long, LastRow As Long LastCol = Cells(2, Columns.Count).End(xlToLeft).Column LastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("C3", Cells(LastRow, LastCol)).Select Selection.PasteSpecial xlPasteFormulas Application.CutCopyMode = False
Изменить, так как он не работает так, как предполагалось. Там будет два других метода, которые я бы использовал. Во-первых, наиболее очевидным является диапазон. .AutoFill
:
Dim LastCol As Long, LastRow As Long LastCol = Cells(2, Columns.Count).End(xlToLeft).Column LastRow = Cells(Rows.Count, "B").End(xlUp).Row Range("B3").AutoFill Destination:=Range("B3", Cells(3, LastCol)), Type:=xlFillDefault Range("B3", Cells(3, LastCol)).AutoFill Destination:=Range("B3", Cells(LastRow, LastCol)), Type:=xlFillDefault
Что хорошо работает, вы можете легко контролировать, как будут выглядеть формулы.
Другой вариант – перебрать все ячейки вашего диапазона и просто скопировать формулу, хотя она просто копирует формулу как есть, со всеми ссылками на оригинальную ячейку поиска, и я сомневаюсь, что это то, что вы ищете, но здесь все же :
Dim LastCol As Long, LastRow As Long LastCol = Cells(2, Columns.Count).End(xlToLeft).Column LastRow = Cells(Rows.Count, "B").End(xlUp).Row For i = 3 To LastRow For j = 2 To LastCol Cells(i, j).FormulaArray = Cells(3, 2).FormulaArray Next j Next i