尝试使用INDIRECT来引用一系列工作表以及这些工作表中的一系列单元格,以查找MAX。这些都不起作用:
=MAX(INDIRECT("1:"&last_sheet&"!G"&ROW()&":K"&ROW()))
=MAX(INDIRECT("1:6!G"&ROW()&":K"&ROW()))
但是,这样做(但只看一张纸:1):
=MAX(INDIRECT("1!G"&ROW()&":K"&ROW()))
这样做(但不使用INDIRECT):
=MAX('1:6'!G6:K6)
在我看来,INDIRECT根本无法与一系列纸张一起使用。请告诉我,我错了,为什么。
答案 0 :(得分:0)
看起来你可能是对的。以下解决方法很难看,但它确实有效。
=MAX(MAX(INDIRECT("'1'!B1:C2")),MAX(INDIRECT("'2'!B1:C2")),MAX(INDIRECT("'3'!B1:C2")))
答案 1 :(得分:0)
您可以将以下功能粘贴到VBA编辑器中,它将生成您正在寻找的结果。它返回工作簿中所有工作表中指定的任何范围的最大值。像常规函数一样使用它,即=MultiMax(A1)
。它还接受INDIRECT
作为参数。
Function MultiMax(r As Range) As Long
Dim s As Worksheet
Dim a() As Long
Dim m As Long
ReDim a(0 To 0)
For Each s In ThisWorkbook.Sheets
m = Application.WorksheetFunction.Max(s.Range(r.Address).Value)
ReDim Preserve a(0 To UBound(a) + 1)
a(UBound(a)) = m
Next
Dim y As Integer
Dim m1 As Long
For y = 0 To UBound(a)
If a(y) > m1 Then
m1 = a(y)
End If
Next
MultiMax = m1
End Function
答案 2 :(得分:0)
与上述解决方案类似,您也可以尝试使用数组公式。但是,这将要求您在每张纸上执行MAX功能(最好在每张纸上的相同单元格中)。例如,在工作表' 1'上,您在单元格D1中有MAX(B2:C2),然后在工作表' 2',工作表' 3'然后在摘要表上,使用此数组公式:
=MAX(N(INDIRECT(ADDRESS(1,4,,,ROW(INDIRECT("A1:A"&last_sheet))))))
然后一定要点击 Ctrl + Shift + 输入将其作为数组公式输入。
这假定" last_sheet"例如,是一个整数值,例如6,然后生成一个范围字符串(" A1:A6"),将其传递给INDIRECT,后者将它传递给ROW(),从而为您提供1:6的数组。此数组用作ADDRESS的工作表名称列表,该工作表在六个工作表的每一个上的单元格D1上创建一个引用数组。数组传递给INDIRECT,返回#VALUE!错误,直到您将错误数组传递给N()。最后,max返回数组中的最大值。您可以使用"评估公式"看看它是如何逐步分解的,但希望这对你来说是一个很好的起点!