我有一组随机分布的数据,如下图所示。我想收集它们并按组顺序排列(组 1、组 2 等)。在下面的示例中,如果 A:R 列中的任何列中存在值“1”,则所有“1”都应排列在组 1 中。如果没有 1,则它应该显示为空白。有没有办法在 Excel 中使用公式或宏来执行此操作?不过我更喜欢公式。谢谢。
以下是示例工作簿的链接(可编辑):https://1drv.ms/x/s!AgVGRfBWRysXgWJTuf-ILJ0BTxyQ
答案1
首先,组必须具有相同大小的数据(以防行只有一个数字)。因此,第 1 组必须从 T 到 AK。在单元格 T2 中输入公式:
=IFERROR(INDEX($A$2:$R$2,SMALL(IF($A$2:$R$2=1,COLUMN($A$2:$R$2)),COLUMN(A:A))),"")
输入公式并按 Ctrl+Shift+Enter 输入数组公式。然后,在 U 至 AK 列上复制并粘贴时,将在 Group1 上显示 1 的所有出现。
一些改进的建议:
- 如果您在单元格 T1 中只输入数字 1,然后自定义格式以显示
"Group " 0
,那么您可以将公式中的 1 更改为地址 T1。然后,当将其复制到其他组时,公式应该调整到其他数字(您必须将 1 放入从 T 到 AK 的每一列,但只显示其中一列,从 AM 到 BD 的列中应该有数字 2,依此类推)。 - 如果您的 Excel 是 2010 或更早版本,则您没有该
IFERROR()
函数。解决方法是使用IF()
和ISERROR()
:IF(ISERROR(...),"",(...))
。这(...)
是 的第一个参数上的公式IFERROR()
。 - 要将公式复制到其他行,您可以更改 INDEX 函数以返回行和列。唯一的区别是返回的行是单元格的行,而列是公式
(...)
。