Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA迭代工作表并更改单元格以反映汇总表_Excel_Macros_Vba - Fatal编程技术网

Excel VBA迭代工作表并更改单元格以反映汇总表

Excel VBA迭代工作表并更改单元格以反映汇总表,excel,macros,vba,Excel,Macros,Vba,所以我是VBA新手,试图编写一段代码来提高效率。我试图遍历66个不同的表(名为1、2、3等),并更改某些单元格的值以反映摘要表中列出的值。我想在总结表中对工作簿中的每个工作表向下迭代一行。我试着录制一个宏并基于它编写一些东西,但我的解决方案不起作用。任何帮助都将不胜感激 *更新了代码,但有些东西仍然不起作用。我想这可能是因为我没有正确地选择要进行更改的工作表 **Edit2:代码现在可以工作了——我想我必须把前66页放在工作簿的开头,宏试图遍历其他受保护的工作表。谢谢你的帮助 Sub Macro

所以我是VBA新手,试图编写一段代码来提高效率。我试图遍历66个不同的表(名为1、2、3等),并更改某些单元格的值以反映摘要表中列出的值。我想在总结表中对工作簿中的每个工作表向下迭代一行。我试着录制一个宏并基于它编写一些东西,但我的解决方案不起作用。任何帮助都将不胜感激

*更新了代码,但有些东西仍然不起作用。我想这可能是因为我没有正确地选择要进行更改的工作表

**Edit2:代码现在可以工作了——我想我必须把前66页放在工作簿的开头,宏试图遍历其他受保护的工作表。谢谢你的帮助

Sub Macro6()
Dim WS_Count As Integer
Dim i As Integer
'Set WS_Count to the number of sheets with CPT data
WS_Count = 66
For i = 1 To WS_Count
Sheets(i).Activate
Sheets(i).Select
Range("A2").FormulaR1C1 = "='Data Input'!R[" & (17 + i) & "]C[1]"
Range("F6").FormulaR1C1 = "='Data Input'!R[" & (14 + i) & "]C[4]"
Range("H6").FormulaR1C1 = "='Data Input'!R[" & (14 + i) & "]C[3]"
Range("I6").FormulaR1C1 = "='Data Input'!R[" & (14 + i) & "]C[3]"
Range("L6").FormulaR1C1 = "='Data Input'!R[" & (14 + i) & "]C[8]"
Range("M6").FormulaR1C1 = "='Data Input'!R[" & (14 + i) & "]C[9]"
Next
End Sub
等等

添加公式前无需选择单元格

编辑:尝试不使用RC符号(您可能需要稍微调整数字)

等等

添加公式前无需选择单元格

编辑:尝试不使用RC符号(您可能需要稍微调整数字)


我已经做了更改,但它仍然不起作用-我是否也必须更改引用表格的方式?好的,我发现了我的第一个问题-我需要去掉for循环中的第二个I=。我已经做了更改,但它仍然不起作用-我是否也必须更改引用表格的方式?好的,我发现了我的第一个问题-我需要我的for循环中的第二个i=输出。
Range("A2").FormulaR1C1 = "='Data Input'!R["& (17+i) & "]C[1]"
Sub Macro6()
    Const WS_Count As Long = 66 'number of sheets with CPT data
    Dim i As Long

    For i = 1 To WS_Count
        With Sheets(i)
            .Range("A2").Formula = "='Data Input'!A" & (17 + i)
            .Range("F6").Formula = "='Data Input'!D" & (14 + i)
            .Range("H6").Formula = "='Data Input'!C" & (14 + i)
            .Range("I6").Formula = "='Data Input'!C" & (14 + i)
            .Range("L6").Formula = "='Data Input'!H" & (14 + i)
            .Range("M6").Formula = "='Data Input'!I" & (14 + i)
        End With
    Next
End Sub