如何从 Excel 中的一行中获取非连续值的列表(忽略空格)?

How do I get a list of non-contiguous values from a row in Excel (ignoring blanks)?

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

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

我不得不通过分别检索第 1 次到第 10 次出现的值来做类似的事情,并且在转储 hloookup、学习索引+匹配和数组公式以及调整在线找到的类似列问题的解决方案后能够实现这一点,比如 this

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

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

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

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

尚不完全清楚您是想在行中还是在列中显示整理后的(无空白)值,但我怀疑您希望通过相对 row/absolute 列单元格引用的组合从单元格开始并向右填充。

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

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

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

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

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

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

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

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

我从来都不喜欢您的原始公式用来确定该公式样式中的列(或行)的数学技巧(例如 COLUMN($FR5:$GT5)-COLUMN($FR5)+1)。我在上面的等价公式中大幅削减了它,但它们相当于同一件事。