Excel 循环浏览图纸并基于动态图纸参照执行计算

Excel 循环浏览图纸并基于动态图纸参照执行计算,excel,vba,loops,dynamic,reference,Excel,Vba,Loops,Dynamic,Reference,是否可以在图纸列表中循环并执行某些计算,这些计算包含来自不同工作表列表的图纸参考?例如,您有一个工作表列表(列表1),该列表将作为计算的目标,您还有一个工作表列表(列表2),该列表是计算所基于的。假设列表1中有sheet1和sheet2,列表2中有sheetA和sheetB。基于表A的计算将显示在表1中,基于表B的计算将显示在表2中。我认为代码应该是这样的: Sub LoopthroughWorksheets() Dim sheet_name As Range Dim sheet_name2 A

是否可以在图纸列表中循环并执行某些计算,这些计算包含来自不同工作表列表的图纸参考?例如,您有一个工作表列表(列表1),该列表将作为计算的目标,您还有一个工作表列表(列表2),该列表是计算所基于的。假设列表1中有sheet1和sheet2,列表2中有sheetA和sheetB。基于表A的计算将显示在表1中,基于表B的计算将显示在表2中。我认为代码应该是这样的:

Sub LoopthroughWorksheets()
Dim sheet_name As Range
Dim sheet_name2 As Range
Set sheet_name2 = Sheets("WS").Range("F:F")
For Each sheet_name In Sheets("WS").Range("C:C")
    If sheet_name.Value = "" Then
        Exit For
    Else
        With Sheets(sheet_name.Value)
                .Range("K1") = .Range("sheet_name2.Value!A14").Value
        End With
    End If
    Next sheet_name
End Sub
我在这一行得到一个“运行时错误”1004:应用程序定义的或对象定义的错误:
.Range(“K1”)=.Range(“sheet_name2.Value!A14”).Value

非常感谢您的帮助


关于,

是的,这是可能的,但您的代码是错误的

您必须以某种方式对C列和F列进行迭代,然后检索匹配的工作表名称:

Sub LoopthroughWorksheets()
    Dim sheet_name As Range
    Dim sheet_name2 As Range
    Set sheet_name2 = Sheets("WS").Range("F:F")
    ' NEW
    Dim counter As Long
    counter = 1

    For Each sheet_name In Sheets("WS").Range("C:C")
        If sheet_name.Value = "" Then
            Exit For
        Else
            With Sheets(sheet_name.Value)
                .Range("K1").Value = Sheets(sheet_name2(counter, 1).Value).Range("A14").Value
                ' NEW                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^                   
                counter = counter + 1
            End With
        End If
    Next sheet_name
End Sub

感谢@MP24的回复。使用此代码:
.Range(“K1”)=Sheets(“sheet_name2”).Range(“A14”).Value
我得到一个运行时错误9:下标超出范围。使用此代码:
.Range(“K1”)=工作表(工作表名称2).Range(“A14”).Value
我得到一个运行时错误13:类型不匹配。有了这个代码:
.Range(“K1”)=Sheets(sheet_name2.Value)。Range(“A14”).Value
我得到了一个运行时错误13:类型不匹配。您认为还有什么地方可能出错吗?列表1的工作表列表为A1:A51,列表2的工作表列表为F1:F51。单元格A14包含一个数字而不是文本。它起作用了!!非常感谢你。这将减少我花在编码上的时间。我认为这是一个相当常见的问题,但我在任何地方都找不到答案。只是好奇,柜台是怎么工作的?我不确定工作表名称2(1,1)如何等同于单元格A1中列出的工作表。最好是从内到外分析编码:
sheet\u name 2
是一个包含所有工作表名称的范围(F列)。大括号
(counter,1)
将作为行-列访问,即如果
counter=3
图纸名称2(3,1)
将是F列中的第三行/第一列单元格。然后,构造将访问第三行/第一列的值(即单元格内容),这是您的图纸名称。然后,它使用
Sheets(…)
检索工作表,并访问此工作表上的范围A1。