我想在Column A
,Sheet2
,Sheet3
和Sheet4
中查看Sheet5
( A1:A365 )并找到每个单元格的最大值。比较A1
,Sheet2
,Sheet3
和Sheet4
中的Sheet5
,找到最大值,并在结果页的A1
中进行报告。同样在单元格B1
中报告此最大值的相应表格。这将继续Column A
( A1:A365 )
我使用的代码如下:
Worksheets("sheet2").Range("A1").Value = a
Worksheets("sheet3").Range("A1").Value = b
Worksheets("sheet4").Range("A1").Value = c
Worksheets("sheet5").Range("A1").Value = d
MaxValue = Application.Max(a, b, c, d)
Range("A1").Value = MaxValue
答案 0 :(得分:3)
是的我只有4张 - Mohsen 11分钟前
非VBA解决方案
在Sheet1,Cell A1中,放置此公式
=MAX(Sheet2!A1,Sheet3!A1,Sheet4!A1,Sheet5!A1)
在Sheet1,Cell B1中,放置了这个可怕的公式。我确信有更好的方法可以找到工作表名称。
=IF(Sheet1!A1=Sheet2!A1,RIGHT(CELL("filename",Sheet2!A1),LEN(CELL("filename",Sheet2!A1))- FIND("]",CELL("filename",Sheet2!A1),1)),IF(Sheet1!A1=Sheet3!A1,RIGHT(CELL("filename",Sheet3!A1),LEN(CELL("filename",Sheet3!A1))- FIND("]",CELL("filename",Sheet3!A1),1)),IF(Sheet1!A1=Sheet4!A1,RIGHT(CELL("filename",Sheet4!A1),LEN(CELL("filename",Sheet4!A1))- FIND("]",CELL("filename",Sheet4!A1),1)),IF(Sheet1!A1=Sheet5!A1,RIGHT(CELL("filename",Sheet5!A1),LEN(CELL("filename",Sheet5!A1))- FIND("]",CELL("filename",Sheet5!A1),1)),""))))
但强烈要求谨慎。要使用RIGHT(CELL("filename",Sheet2!A1),LEN(CELL("filename",Sheet2!A1))- FIND("]",CELL("filename",Sheet2!A1),1))
,您需要保存工作簿。
我的Sheet2,A1有1
,Sheet3,A1有2
,Sheet4,A1有2.5
,Sheet5,A1有3
VBA解决方案
Sub Sample()
Dim ws As Worksheet
Dim i As Long
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
.Range("A1:A365").Formula = "=MAX(Sheet2!A1,Sheet3!A1,Sheet4!A1,Sheet5!A1)"
.Range("A1:A365").Value = .Range("A1:A365").Value
For i = 1 To 365
Select Case .Range("A" & i)
Case ThisWorkbook.Sheets("Sheet2").Range("A" & i).Value: .Range("B" & i).Value = "Sheet2"
Case ThisWorkbook.Sheets("Sheet3").Range("A" & i).Value: .Range("B" & i).Value = "Sheet3"
Case ThisWorkbook.Sheets("Sheet4").Range("A" & i).Value: .Range("B" & i).Value = "Sheet4"
Case ThisWorkbook.Sheets("Sheet5").Range("A" & i).Value: .Range("B" & i).Value = "Sheet5"
End Select
Next i
End With
End Sub
答案 1 :(得分:1)
快速解决方案
根据Sidd的回答,这是我的非VBA解决方案,没有可怕的公式:
=MAX(Sheet2:Sheet5!A1)
=IF(Sheet2!A1=A1,"Sheet2", IF(Sheet3!A1=A1,"Sheet3", IF(Sheet4!A1=A1,"Sheet5", "Sheet5")))
更多结构性解决方案(更适合许多工作表):
如果你有很多工作表,你可以考虑这个替代方案。
Sheets
。 (类似于Sidd的可怕公式,我使用CELL公式动态获取每个工作表名称。但是,这在静态模型中不是必需的)=MAX(Sheet2:Sheet5!A1)
=INDEX(Sheets,MATCH(1,COUNTIF(INDIRECT("'"&Sheets&"'!A1"),A1),0))
将其作为数组公式输入,即按 Ctrl - Shift - 输入而不是输入。
我上传了第二个解决方案here。
答案 2 :(得分:1)
由于要复制公式,您不希望在Peter Albert的公式中对A1
中的单元格INDIRECT
进行硬编码。您可以使用CELL("address",A1)
来获取可以复制的A1
的引用。
您还可以通过使用LOOKUP返回结果而不是INDEX
&来避免数组输入公式的需要。 MATCH
。
请注意,LOOKUP
将返回上一个工作表的名称,如果出现平局,则返回最大值。
以下公式使用命名范围表格以及每个工作表的名称
=MAX(Sheet2:Sheet5!A1) returns max value (identical to Peter Albert's formula)
=LOOKUP(2,1/COUNTIF(INDIRECT("'" & Sheets & "'!" & CELL("address",A1)),A1),Sheets) returns name of sheet with max value
答案 3 :(得分:0)
制作两张新单张,其中一张标题为“ First ”,另一张为“ Last ”。通过包含宏的按钮为您的项目创建新工作表,以在“ First 和 Last ”之间添加重复的工作表。然后,只需在报告单元格中添加其中一个简单公式:=SUM(First:Last!K28)
或=MAX(First:Last!K28)