【问题标题】:Find first cell in a row that contains a number?查找包含数字的行中的第一个单元格?
【发布时间】:2010-12-22 17:13:55
【问题描述】:

我正在使用 Excel 中的导出表,例如:

|-------------------------------------------------------------------------------|
|   |        A          |  B  |  C  |  D  |  E  |  F  |   G   |  H  |     I     |
|---|-------------------|-----|-----|-----|-----|-----|-------|-----|-----------|
| 1 |      Domain       | JAN | FEB | MAR | APR | MAY | Start | End |   Change  |
|---|-------------------|-----|-----|-----|-----|-----|-------|-----|-----------|
| 2 | www.mydomain1.com |     |   1 |   4 |   3 |   1 |     1 |   1 |         0 |
|---|-------------------|-----|-----|-----|-----|-----|-------|-----|-----------|
| 3 | www.mydomain2.com |   2 |   4 |  12 |  18 |  23 |     2 |  23 |        21 |
|---|-------------------|-----|-----|-----|-----|-----|-------|-----|-----------|
| 4 | www.mydomain3.com |     |     |  14 |  12 |     |    14 | xxx | NOT FOUND |
|-------------------------------------------------------------------------------|

我正在尝试将当前状态(最后一个单元格)与原始单元格(第一个具有值的单元格)进行比较。

在第一列,我有公式=IF(G2 = "xxx", "NOT FOUND", IF(H2 = "xxx", "NOT FOUND", H2 - G2))

在 H 列,我有公式 =IF(F2 = "", "xxx", F2)

在 G 列中,我需要找到第一个带有数字的单元格。如果该范围内没有,我需要 G 为“xxx”。我想我只需要检查范围(B2 到 F2)中包含值的第一个单元格,而不仅仅是一个数字。我尝试使用索引和匹配组合,但我不太明白。

【问题讨论】:

  • +1 表示格式正确的表格!
  • 谢谢! :) 花了我一段时间哈哈

标签: excel excel-2007 worksheet-function


【解决方案1】:

下面的公式($G$2 并填写)应该可以解决问题:

=IF(ISBLANK(F2),"xxx",INDEX(B2:E2,,COUNTBLANK(B2:F2)+1))

请注意,这只有在第一个和最后一个条目之间没有其他空白单元格时才有效。

更新:这是一个更通用的选项from the Mr.Excel forum

=INDEX(B2:F2,MATCH(1,IF(B2:F2<>0,IF(B2:F2<>"",1)),0))

这个必须作为“数组公式”输入,这意味着您必须在粘贴公式后按 CTRL-SHIFT-ENTER。

回复评论:

效果很好,除了如果所有单元格连续为空,则返回#N/A。因此,我稍微更改了公式以包含 IsNA() 条件:

=IF(ISNA(INDEX(B2:F2,MATCH(1,IF(B2:F2<>0,IF(B2:F2<>"",1)),0))), "xxx",
    INDEX(B2:F2,MATCH(1,IF(B2:F2<>0,IF(B2:F2<>"",1)),0)))

您可以执行以下操作,而不是复制整个公式:

=IF(COUNTBLANK(B2:F2)=COLUMNS(B2:F2),"xxx",
    INDEX(B2:F2,MATCH(1,IF(B2:F2<>0,IF(B2:F2<>"",1)),0)))

【讨论】:

  • 这就是我之前在使用 Index 公式时遇到的问题。中间会有空白单元格,因为页面会不时从谷歌的索引中删除。有办法解决吗?
  • 一件快速的事情——它工作得很好,除了如果所有单元格连续为空,它返回#N/A。因此,我稍微更改了公式以包含 IsNA() 条件:=IF(ISNA(INDEX(B2:F2,MATCH(1,IF(B2:F2&lt;&gt;0,IF(B2:F2&lt;&gt;"",1)),0))), "xxx", INDEX(B2:F2,MATCH(1,IF(B2:F2&lt;&gt;0,IF(B2:F2&lt;&gt;"",1)),0)))
  • @Dexter:我在上面发布了另一个可能的解决方案。如果不出意外,它更易于人类阅读
  • 啊,好的,我明白了。那我就这么用。有道理。
【解决方案2】:

如果输入为 ARRAY 公式 (ctrl-shift-enter),则以下内容有效。

如果中间有空白单元格,也可以使用。

{=INDEX(B2:F2,1,MIN(IF(ISBLANK(B2:F2),99999,COLUMN(B2:F2))))}

HTH

编辑

这个也控制错误:

{=IF(ISERROR(INDEX(B2:F2,1,MIN(IF(ISBLANK(B2:F2),9999,COLUMN(B2:F2))))),"xxx",
  INDEX(B2:F2,1,MIN(IF(ISBLANK(B2:F2),9999,COLUMN(B2:F2)))))}

【讨论】:

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