Вставьте формулу в одну и ту же ячейку на каждом листе, используя цикл
Используя функцию цикла VBA, я хочу ввести одну и ту же формулу в одну и ту же ячейку на каждом листе в моей книге.
Я пробовал следующий код, но он не перебирает все листы. Он обновляет только тот, который выбран по умолчанию:
Sub insertformula()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
Range("D7").Select
ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-5]C[-1],'SHEET ALL WILL REFERENCE'!C[-2]:C[-1],2,FALSE)"
Next
End Sub
Чего мне не хватает, чтобы этот код не проходил по всем рабочим листам?
Спасибо,
3 ответа
Вам не нужно использовать VBA или циклы для этого. Если вы находитесь на основном листе, удерживайте нажатой клавишу "Control", нажимая по одной на вкладки листа, пока каждая из них не будет выделена.
Когда все листы, в которые вы хотите скопировать формулу, будут выделены, вы можете ввести формулу в ячейку, и она автоматически скопируется в точную ячейку на соответствующих листах. Когда вы закончите с этим, не забудьте нажать на отдельном листе, чтобы отменить выбор других.
Вам не нужно зацикливаться. Это будет применять формулу ко всем листам одновременно:
Sub hfdjs()
Sheets.Select
Range("D7").Activate
ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-5]C[-1],'SHEET ALL WILL REFERENCE'!C[-2]:C[-1],2,FALSE)"
End Sub
EDIT # 1:
Скажем, у нас есть 5 листов с именами по умолчанию, и мы хотим вставить формулу во все из них, кроме первых двух листов.
Sub FormulaBlaster()
Sheets(Array("Sheet3", "Sheet4", "Sheet5")).Select
Range("B9").Select
Selection.Formula = "=1+2"
End Sub
Вы не указываете, какой диапазон вы хотели бы использовать. Вы также можете указать формулу для диапазона, не выбирая его сначала
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Range("D7").FormulaR1C1 = "=VLOOKUP(R[-5]C[-1],'SHEET ALL WILL REFERENCE'!C[-2]:C[-1],2,FALSE)"
Next