【问题标题】:Excel - Reverse order of rows in Named RangeExcel - 命名范围中的行倒序
【发布时间】:2011-10-03 09:06:50
【问题描述】:

我有这些工作正常的命名范围。但由于数据是如何导入工作表的,它们从一开始就被反转了,我需要再次重新反转它们。

命名范围如下所示:

=OFFSET(Numbers1!$D$2;0;0;SUMPRODUCT(IF(Numbers1!$D$2:$D$60<>"";1;0));1)

那么这只能通过改变公式来实现吗?

“反转”意味着它在电子表格中看起来像这样:

201103
201102
201101
201012
201011
201010
201009
201008
201007
201006
201005
201004
201003
201002
201001
200912

我所追求的是颠倒顺序,以便底部的数字(200912)出现在顶部,等等。

【问题讨论】:

  • 你所说的“反转”是什么意思?该公式中的反转是什么?
  • 没什么。数据是反向导入的,它是通过我无权访问的宏。数据本身并不“知道”它被反转了,所以我想反转它。
  • 再次,您所说的“反转”是什么意思?在每个单元格内从右到左书写?单元格顺序是左右翻转还是上下颠倒?一遍又一遍地重复“颠倒”并不能帮助我们理解。
  • 嗯,范围从第 1 行到第 60 行占据整个 D 列。由于数据的导入方式,它们的排序顺序错误。我正在从这个范围创建一个图表,我希望它反转它看起来正确。 Instad 去 10,9,8,7,6 等等,我希望它去 1,2,3,4,5,6 等等。编辑:检查更新的帖子。
  • 知道了。见答案。顺便说一句,你在用SUMPRODUCT(IF(Numbers1!$D$2:$D$60&lt;&gt;"";1;0)) 做什么? (大概在一个数组中?)这不只是和COUNT一样吗?

标签: sorting excel excel-2007 range vba


【解决方案1】:

你可以使用这个公式,例如在单元格 E2 中并向下拖动:

=IF(COUNT(D2:D$60)<1,"",OFFSET(D$2,COUNT(D2:D$60)-1,0))

结果与 D2:D60 顶部的数值相同,但顺序相反。

【讨论】:

  • 啊哈,但请记住,这不是我在单元格中输入的公式。它在一个命名范围内。此外,SUMPRODUCT 必须存在,因为命名范围不应包含无值。到目前为止,SUMPRODUCT 似乎是目前唯一的解决方案。编辑:此外,命名范围内的公式必须与第一篇文章中提到的公式相似。 =OFFSET(Numbers1!$D$2;0;0;SUMPRODUCT(IF(Numbers1!$D$2:$D$60"";1;0));1)
  • 是的,但你不能先翻转“从一开始就反转”的数值的顺序,然后让你的命名范围公式引用这个新的翻转数据而不是原始数据顺序错误?
  • 这可能意味着更改单元格中的公式而不是命名范围。每个单元格中的公式如下所示:=IF(Numbers1!$E$20;Numbers1!$A$2;"")。 Numbers1 是我从 btw 中挑选值的工作表。
  • 看,当我看不到电子表格中的内容时,我不可能准确地告诉您在每个单元格中要写什么。您不能以错误的顺序从那些导入的值开始,使用答案中的公式翻转它们的顺序,使它们处于正确的顺序,然后使用这些正确排序的值继续所有其余部分吗?
  • 如果我知道单元格中的公式会是什么样子,我可以做到这一点。您在答案中编写的公式也不起作用。所以我无法想象这些公式会是什么样子。我想我可以反转图表本身的轴。虽然我必须做很多定制才能让它正确。但这是可能的。
猜你喜欢
  • 1970-01-01
  • 2019-12-05
  • 2017-10-01
  • 2023-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多