Excel formula Excel-使用数组公式定义命名范围

Excel formula Excel-使用数组公式定义命名范围,excel-formula,Excel Formula,我有一个明确的课程表、日期表和讲师表。在Excel中,我显然可以过滤表格,使其仅显示一门课程。我还可以创建另一个工作表,并使用索引/匹配数组公式来显示筛选后的表。但是,我试图定义一个命名范围,该范围将输出过滤表的二维数组 Course Date Instructor Winemaking 7/3 Fred Paper Airplanes 7/16 Bill Advanced Kazoo 7/22 Sally Wine

我有一个明确的课程表、日期表和讲师表。在Excel中,我显然可以过滤表格,使其仅显示一门课程。我还可以创建另一个工作表,并使用索引/匹配数组公式来显示筛选后的表。但是,我试图定义一个命名范围,该范围将输出过滤表的二维数组

Course             Date    Instructor
Winemaking         7/3     Fred
Paper Airplanes    7/16    Bill
Advanced Kazoo     7/22    Sally
Winemaking         8/6     Harry
Cooking 101-Toast  8/19    Beth
Advanced Kazoo     8/24    Xavier
Winemaking         9/14    Fred
Paper Airplanes    9/25    Lilly
我希望命名范围(例如CourseWine)等于:

Winemaking         7/3     Fred
Winemaking         8/6     Harry
Winemaking         9/14    Fred
我希望有一个命名范围,因为它:

  • 使用SharePoint Excel Web部件非常容易显示
  • 不需要对帮助器表进行任何更新
  • 不太可能被其他编辑电子表格的用户搞砸
  • 我尝试了几个组合(其中一个来自),但每次指定的范围仅是所需过滤输出的第一行

    =INDEX(Table,MATCH(1,(Table[Course]="Winemaking")*(Table[Date]>TODAY()),0),0)
    
    =INDEX(Table,SMALL(IF(Table[Course]="Winemaking",ROW(Table[Course])-MIN(ROW(Table[Course]))+1),ROW(INDIRECT("1:"&COUNTIF(Table[Course],"Winemaking")))),0)
    

    是否有一个公式,我可以定义一个命名范围,返回二维数组?我也可以通过数据透视表来实现这一点,但不能完全防止有人更改数据透视表并破坏SharePoint中的视图。。。我不能求助于按课程而不是按日期对清单进行排序。我也希望避免VBA。这可能吗?

    若要使用INDEX()从数组公式返回多个查找值,请使用SMALL()而不是MATCH()来定位这些值

    根据您的情况,可以使用以下数组公式:

    =IFERROR(INDEX(Table,SMALL(IF(("Winemaking"=Table[Course])*(Table[Date]>TODAY()),ROW(Table[Course])-MIN(ROW(Table[Course]))+1, ""),ROW(A1)),{1,2,3}),"")
    
    注:

  • 应为输出第一行的所有单元格输入公式,然后逐行复制
  • 这意味着如果您希望输出在D15:F20范围内

    …然后您将选择D15:F15,并使用Ctrl-Shift-enter为该范围输入一次公式

    …然后将第一个输入的范围复制到D16:F20

  • 输入端部附近的A1作为相对参考非常重要

  • 最末端的文本数组确保返回表的适当列

  • 将整个公式包装在IFERROR()中,以删除过滤结果的行数小于输入公式的行数时输出中显示的错误


  • 这是一个写得很好的问题。你的情况和问题非常清楚,这使得回答问题更加容易。谢谢。我更新了答案,在公式中加入了日期标准(课程在今天之后)。我的电子邮件地址在我的个人资料中。请给我发电子邮件,我会把模型发给你,效果很好。我们将浪费大量的时间在这里来回走动。我的第二次尝试使用了SMALL(请参见上面的两个公式示例)。您的示例实际上将命名区域的输出从整行更改为仅一个单元格“Winemaking”。我可能还不够清楚,但我已经知道如何将其作为CSE数组输入到另一个工作表中,但我正在尝试避免这种情况。我希望用名称管理器来定义一个名称,从而定义一个公式,但它仍然只返回第一行而不是整个数组。我现在在这里制作的模型示例中看到我的公式正在工作,我在这里设计了您问题的答案。它起作用了。它产生完整的输出。。。全部三列。我的电子邮件地址在我的个人资料中。请给我发电子邮件,我会把模型发给你。我们将浪费大量的时间在这里来回穿梭。这是我的模型中唯一命名的公式。但是,您需要为第一行输出输入一次,然后将该行复制到所需输出的其他行。