【问题标题】:How do I get a list of non-contiguous values from a row in Excel (ignoring blanks)?如何从 Excel 中的一行获取不连续值的列表(忽略空格)?
【发布时间】:2015-08-13 21:30:08
【问题描述】:

我正在重组一些数据集,并且需要在 Excel for Mac 中检索一行中的非连续值列表。有些单元格应丢弃带有空格的单元格,因此结果是相同值的水平列表,它们之间没有空白单元格。

这些值出现在 6 个连续单元格的块中,其中散布着不同数量(6 的倍数!)的空白单元格。数据是数字,所以 >0 就可以了。我已经尝试过调整网上找到的解决方案,例如here,但没有成功。

我必须通过分别检索第 1 到第 10 次出现的值来做类似的事情,并且能够在转储 hloookup、学习索引+匹配和数组公式以及针对列的类似问题调整在线找到的解决方案后完成此操作,例如this

这就是我检索连续第二次出现的解决方案的样子:

=IFERROR(INDEX($FR5:$GT5,SMALL(IF($FR5:$GT5>0,COLUMN($FR5:$GT5)-COLUMN($FR5)+1,FALSE),2)), "9999")

其中 $FR5:$GT5 是我需要从中检索值的范围,而 9999 是我的缺失值代码。只是想我会把它扔在那里,像我这样技能有限的人可能会觉得它很有用。

有什么提示可以帮助我继续前进吗?最好,我想调整我以前的公式来解决这个问题。我试过但无法摆脱空白单元格。我被困住了!提前致谢。

【问题讨论】:

  • 谢谢,这实际上可行 - 除了我必须对几个数据集执行此操作,每个数据集几次,以获取不同的范围和要检索的值的数量。所以我需要依靠我可以仔细检查等的公式。我什至在我的起源和命运范围内都有 sum/countifs 作为安全检查所有值都被正确检索!无论如何,感谢您添加到我的 Excel 技巧包中!

标签: excel-formula array-formulas excel-2011


【解决方案1】:

您是否要在行或列中显示整理(无空白)值尚不完全清楚,但我怀疑您希望在单元格中开始的相对行/绝对列单元格引用的组合并正确填写。

您的公式非常接近于收集数字序列,同时忽略空格和小于或等于零的数字。您只需要调整SMALL functionk 参数(上面示例公式中的2)。

如果您将=COLUMN(A:A) 放入一个单元格并向右填写,您将收到一个整数序列,例如 1、2、3、4 等。同样,如果您将=ROW(1:1) 放入一个单元格并填写,您将再次接收 1、2、3、4 等。这些子公式之一可用于增加 SMALL 的 k,具体取决于您是否要填写公式以接收返回的值单行或向下填写以接收单列中的返回值。这样,向右或向下填充将获得第二次、第三次等返回。

要连续接收您的返回值,请使用此数组公式

=IFERROR(INDEX(5:5, SMALL(IF($FR5:$GT5>0, COLUMN($FR:$GT)), COLUMN(A:A))),"9999")

根据需要填充以捕获所有值。要在列中接收您的返回值,请使用此数组公式

=IFERROR(INDEX($5:$5, SMALL(IF(FR$5:GT$5>0, COLUMN(FR:GT)), ROW(1:1))),"9999")

根据需要填写以捕获所有值。

数组公式需要用 Ctrl+Shift+Enter↵ 完成。一旦正确输入第一个单元格,它们就可以像任何其他公式一样被填充或向下或向右复制。

我从来都不喜欢您的原始公式用来确定该公式样式中的列(或行)的数学杂技(例如COLUMN($FR5:$GT5)-COLUMN($FR5)+1)。我已经在上面的等效公式中大大减少了它,但它们的含义是一样的。

【讨论】:

  • 谢谢!这非常有效。我非常感谢您花时间解释为什么它也有效:-) 我怀疑解决方案几乎就在我的脸上......哈哈。它也有助于对我的第 n 个解决方案采用更优雅的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多