【问题标题】:Reversing the order or an array in Excel from last to first将Excel中的顺序或数组从最后一个反转到第一个
【发布时间】:2015-05-01 12:11:29
【问题描述】:

在包含多张工作表的工作簿中,我在一张工作表中引用来自多个 csv 文件的数据,并按日期升序排序。原始的 csv 文件就是这样组织的。是否可以通过目标工作表中的“最新到最旧”来反转这个范围,而不复制数据,也没有 VBA?非常感谢您的任何指点?

我现在这样做的方式是引用连续的最后一个有效值,然后是倒数第二个,倒数第三个,依此类推,直到第一个。我用于第一个单元格的公式是:

=INDEX([A17U.SI.csv]A17U.SI!A:A,MATCH(9.99999999999999E+307,[A17U.SI.csv]A17U.SI!A:A))

第二个单元格:

=OFFSET(索引([A17U.SI.csv]A17U.SI!A:A,MATCH(9.99999999999999E+307,[A17U.SI.csv]A17U.SI!A:A)), -1, 0, 1)

第三个单元格:

=OFFSET(索引([A17U.SI.csv]A17U.SI!A:A,MATCH(9.99999999999999E+307,[A17U.SI.csv]A17U.SI!A:A)), -2, 0, 1)

等等。这需要很长时间,而且我仍然必须知道有多少行包含有效条目。最好让偏移函数中的 -1、-2 根据有效条目的行数自动递增。

【问题讨论】:

    标签: excel


    【解决方案1】:

    假设我们在 A 列中有数据。在单元格 C1 (辅助单元格) 中输入:

    =SUMPRODUCT(MAX((ROW(A:A))*(A:A<>"")))
    

    这让我们在列 A 中的最后一行有一个值。在B1中输入:

    =INDEX(A:A,C$1+1-ROW())
    

    然后抄下来:

    如果 A 列中的项目数是可变的,则 B1 中的公式为:

    =IF(ROW()>$C$1,"",INDEX(A:A,C$1+1-ROW()))
    

    B1 将被复制到 A 列的最大长度。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-26
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      相关资源
      最近更新 更多