【问题标题】:Excel, indirect reference to range of sheetsExcel,间接引用工作表范围
【发布时间】:2015-07-15 20:58:05
【问题描述】:

尝试使用 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 根本不能与一系列工作表一起使用。请告诉我我错了,为什么。

【问题讨论】:

    标签: excel excel-indirect


    【解决方案1】:

    看起来你可能是对的。以下解决方法很丑陋,但它有效。 =MAX(MAX(INDIRECT("'1'!B1:C2")),MAX(INDIRECT("'2'!B1:C2")),MAX(INDIRECT("'3'!B1:C2")))

    【讨论】:

    • 谢谢。但是,使用 INDIRECT 的全部原因是要查看的工作表数量会增加,我想查看一个范围,其结束由“last_sheet”指定并且每天都会发生变化。
    • 自定义构建的函数有用吗?在 VBA 中做到这一点并不难。
    【解决方案2】:

    您可以将以下函数粘贴到 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
    

    【讨论】:

      【解决方案3】:

      与上述解决方案类似,您也可以尝试使用数组公式。但是,这将要求您在每张纸上执行 MAX 功能(最好在每张纸上的同一单元格中)。例如,在工作表“1”上,单元格 D1 中有 MAX(B2:C2),然后在工作表“2”、工作表“3”等上也是如此。然后在摘要工作表上,使用以下数组公式:

      =MAX(N(INDIRECT(ADDRESS(1,4,,,ROW(INDIRECT("A1:A"&last_sheet))))))
      

      然后一定要按 Ctrl+Shift+Enter 将其作为数组公式输入。

      这假设“last_sheet”是一些整数值,例如 6,然后将其创建一个范围字符串(“A1:A6”),将其传递给 INDIRECT,后者将其传递给 ROW(),从而为您提供一个从 1 开始的数组: 6.该数组用作 ADDRESS 的工作表名称列表,它在六张工作表的每张工作表的单元格 D1 处创建一个引用数组。数组被传递给返回 #VALUE! 的 INDIRECT!错误,直到您将错误数组传递给 N()。最后,max 返回数组中的最大值。您可以使用“评估公式”来查看它是如何逐步分解的,但希望这对您来说是一个很好的起点!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-25
        相关资源
        最近更新 更多