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