3

Используя функцию цикла 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 ответа3

4

Вам не нужно использовать VBA или циклы для этого. Если вы находитесь на основном листе, удерживайте нажатой клавишу «Control», нажимая по одной на вкладки листа, пока каждая из них не будет выделена.

Когда все листы, в которые вы хотите скопировать формулу, выделены, вы можете ввести формулу в ячейку, и она автоматически скопируется в точную ячейку на соответствующих листах. Когда вы закончите с этим, не забудьте нажать на отдельном листе, чтобы отменить выбор других.

2

Вам не нужно зацикливаться. Это будет применять формулу ко всем листам одновременно:

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
1

Вы не указываете, какой диапазон вы хотите использовать. Вы также можете указать формулу для диапазона, не выбирая его сначала

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .