【问题标题】:Excel - logic for skipping rows in a formulaExcel - 在公式中跳过行的逻辑
【发布时间】:2014-01-03 00:17:43
【问题描述】:

我正在尝试通过公式而不是 VBA/宏来执行以下操作(我不想要复制/粘贴特殊解决方案,因为我需要更多控制)。是否可以:

我有一列,其中有一些空白行和一些带有值的行。让我们称之为A列。在b列中,如果A列有值,我只想复制单元格。如果没有,我希望它跳到 A 列中的下一个单元格,但留在 b 列的同一单元格上。

A 列
1
2
[空白]
4
[空白]
6

我希望 b 列输出为(但没有空白行)。这意味着公式需要以某种方式循环并具有一些循环跳过逻辑:
1
2
4
6

通常我只会设置单元格 B1 = A1 将其复制过来,但由于我想跳过 A 列中空白的行,所以我不确定除了正确的宏之外还能做什么。我可以使用数组或任何其他创造性的解决方案吗?最终,我也会将它用于具有特定值的项目(不仅仅是空白)。

谢谢!

【问题讨论】:

  • 如果您想在多个条件下使用下面的 barry 解决方案,您可以执行以下操作(忽略空单元格和值为“8”的单元格): =IFERROR(INDEX(A$1:A $10,SMALL(IF((A$1:A$108)*(A$1:A$10""),ROW(A$1:A$10)-MIN(ROW(A$1))+1), ROWS(B$1:B1))),"") ___________________________________________________________________ 您不能在数组中使用条件,但可以执行以下操作:dailydoseofexcel.com/archives/2004/12/04/…

标签: excel worksheet-function array-formulas


【解决方案1】:

一般在单元格 C2 中复制下来....

=IFERROR(INDEX(Range,SMALL(IF(Range=criteria,ROW(Range)-MIN(ROW(Range))+1),ROWS(C$2:C2))),"")

CTRL+SHIFT+ENTER

确认

所以如果您的数据在 A1:A10 中并且您希望 B1 向下的结果

=IFERROR(INDEX(A$1:A$10,SMALL(IF(A$1:A$10<>"",ROW(A$1:A$10)-ROW(A$1)+1),ROWS(B$1:B1))),"")

CTRL+SHIFT+ENTER确认并复制下来

当你用完数据时,你会得到空白

【讨论】:

  • 我刚试过这个,但是两个公式都有语法错误,我不知道在哪里。你能再看看吗?谢谢!
  • 我想我解决了这个错误。它在 if 的真实部分中缺少一个 ')'。但它给了我错误的结果。但它很接近:
  • 是的,修订版不会重新排序。我从 cmets 中删除了错误的一个。右边是左边。
  • 道歉 - 在特定版本中确实有一个错字:( 我从通用版本中取出了 MIN 但没有立即取出左括号 - 现在编辑为正确......
  • .....是的,它不会重新订购。 SMALL 函数指的是行号而不是数据(因此它也适用于 TEXT)。它找到每个匹配的行号,然后按照 ROW 的顺序给你结果,从而保持顺序
【解决方案2】:

对于空白,只需将 ColumnA 复制到 ColumnB,选择 ColumnB,查找并选择,转到特殊...,空白,右键单击选定的单元格之一,删除...并向上移动单元格。

【讨论】:

  • 谢谢。我试图在没有复制/粘贴的情况下做到这一点,因为我有很多列和单元格。我需要更自动化的东西。不过感谢您的建议。
  • 如您所见,我可以列出 5 列样本数据,但将其抽象为 1 列更简单。我还说我想在我的问题中使用一个公式(使用循环类型逻辑,甚至声明数组是一个潜在的解决方案)。显然,我不是在寻找 excel 已经提供的简单复制/粘贴解决方案。巴里的解决方案完全正确。我只是没有用过小,有点挂断它。我并不是要冒犯你,但你的回答并没有解决我的问题,即我所追求的(一个公式,可能是一个数组)。
  • 谢谢你!我已经更新了我上面的问题。我可以看到它是多么令人困惑。再次感谢您花时间和精力来查看和回答我的问题。
【解决方案3】:

如果您不关心数字的顺序(例如将使用直方图进行分箱或分析的数组),则只需复制该行并将值仅粘贴到另一行中即可。现在只需对值行进行排序。它将所有空单元格放在选择的底部。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多