【问题标题】:Excel range without empty spaces没有空格的Excel范围
【发布时间】:2020-05-01 21:33:49
【问题描述】:

我无法创建不包含任何空格的动态范围(用于数据验证列表)。我已尝试遵循本指南:

https://www.myonlinetraininghub.com/excel-ignore-blanks-in-data-validation-list

在此线程中找到:

Simple way to remove blank cells dynamic dropdown list Excel

但是,结果并不令人满意,只是一个反射(空白尚未删除)。请看下图:

https://imgur.com/a/q4HyjWd

我使用的代码(取自指南)是:

=IFERROR(INDEX($A$2:$A$100;SMALL(IF(ISTEXT($A$2:$A$100);ROW($A$1:$A$99)); ROW(A1)));"")

而且我很清楚它是一个数组,因此我使用 ctrl + shift + enter 然后将其向下拖动。仍然没有按预期工作......有什么想法吗?:/

【问题讨论】:

  • 你的公式:SMALL(IF(ISTEXT($A$2:$A$100);ROW($A$1:$A$99))返回small ({row1, row2,0}, row (a1)),让我们尝试编辑公式结果为:small ({row1, row2,10000}, row (a1)),这是一种方法。
  • @TheGridLock,感谢您的帮助,但恐怕我不太明白您的意思
  • 我们试试吧:IF($A$2:$A$100<>"",ROW($A$1:$A$99))
  • 如果不使用 CSE,请尝试先发表评论。

标签: excel indexing excel-formula match


【解决方案1】:

问题在于 SMALL 只输入了一个简单的 12。虽然有很多 0 值被传递给 SMALL。因此,您只是错过了一些将EMPTY 单元格排除在计数之外的方法。

您可能对将最后一个非空行拉入公式的动态方式感兴趣(而不是硬编码A99A100)。以下公式适用于动态返回的Range,在您的情况下为A2:A40。将其放入C2需要 CSE):

=IFERROR(INDEX(A:A,SMALL(INDEX((A$2:INDEX(A:A,MATCH("*",A:A,-1))<>"")*(ROW(A$2:INDEX(A:A,MATCH("*",A:A,-1)))),),COUNTBLANK(A$2:INDEX(A:A,MATCH("*",A:A,-1)))+ROW(A1))),"")

基本上:

  • MATCH("*",A:A,-1) 返回带有最后一个文本的行!
  • A$2:INDEX(A:A,MATCH("*",A:A,-1)) 返回 动态 范围 > A2:A40
  • COUNTBLANK(A$2:INDEX(A:A,MATCH("*",A:A,-1)))+ROW(A1)) 将排除所有要返回到 SMALL 索引的空单元格。

【讨论】:

  • 首先,感谢您的教育回答!不幸的是,它只是有点工作..?我很混乱。请在以下链接中查看图片:imgur.com/a/UdZ4W0c
  • @OmgAllCaps,仅在C2 中插入公式,然后向下拖动......我非常适合我。请记住:根据您的示例,这适用于 text 值!
  • 请查看这张照片,imgur.com/a/PgG1hVX。我为我糟糕的例子道歉。无论我拖多远,超过“可能”的值都不会显示
  • =IFERROR(INDEX(A:A;SMALL(INDEX((A$2:INDEX(A:A;MATCH("";A:A;-1))" ")*(ROW(A$2:INDEX(A:A;MATCH("";A:A;-1)))););COUNTBLANK(A$2:INDEX(A:A;MATCH( "*";A:A;-1)))+ROW(A1)));"")
  • 天哪,我刚刚发现了错误。看起来我在 A 列中的一个单元格中有一个空白空间。因此,代码仅在该特定单元格之前有效。它现在完美无缺。非常感谢你的帮助!对此,我真的非常感激。我会确保现在回去并从你的第一篇文章中学习:)
猜你喜欢
  • 2013-08-21
  • 2020-01-24
  • 1970-01-01
  • 2013-07-29
  • 1970-01-01
  • 2020-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多