【问题标题】:Excel - returning the values from a range starting with the first non-blank valueExcel - 从第一个非空白值开始的范围内返回值
【发布时间】:2016-03-17 15:54:51
【问题描述】:

我有一个数据透视表,显示不同月份收集药物的患者数量,根据第一次治疗的月份按列分组。

数据透视表的右侧是另一个表,我想并排显示数据透视表中的列,每列中的第一个单元格是该特定列中的第一个非空白单元格。换一种方式,我想在数据透视表中显示信息,但每列中第一个非空白值上方没有空格。

在上面的电子表格中,我在最右边的表格中试验了以下公式:

=INDEX(B7:B20;MATCH(TRUE;INDEX(B7:B20<>"";0);0))

正如您从所附图片中看到的那样,这个公式并没有给我想要的东西。它在每一列中不断返回相同的第一个非空白值,直到它到达数据透视表中显示该值的行。此外,在遍历所有单元格后,它会一遍又一遍地返回数据透视表最后一列中的单元格。

关于如何纠正这个问题的任何想法?

【问题讨论】:

    标签: excel


    【解决方案1】:

    根据您提供的信息,在单元格 M6 中使用此公式,然后上下复制:

    =IF(ROWS(M$5:M5)>COUNT(B$6:B$19),"",INDEX(B$6:B$19,SMALL(INDEX((ROW(B$6:B$19)-5)*(ISNUMBER(B$6:B$19)),),COUNTBLANK(B$6:B$19)+ROWS(M$5:M5))))
    

    看起来您的区域参数分隔符是分号而不是逗号,所以这里是分号版本:

    =IF(ROWS(M$5:M5)>COUNT(B$6:B$19);"";INDEX(B$6:B$19;SMALL(INDEX((ROW(B$6:B$19)-5)*(ISNUMBER(B$6:B$19)););COUNTBLANK(B$6:B$19)+ROWS(M$5:M5))))
    

    【讨论】:

      【解决方案2】:

      据我了解,您想跳过空格。此公式适用于 B 列中的文本和数字

      =IFERROR(INDEX(B$7:B$30,SMALL(IF(1-(B$7:B$30=""),IF(1-(B$7:B$30=""),ROW(B$7:B$30)-ROW(B$7)+1)), ROWS($F$7:F7))),"")
      

      输入时使用CTRL+Shift+Enter,因为它是一个数组公式

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-17
        • 1970-01-01
        相关资源
        最近更新 更多