查找包含数字的行中的第一个单元格?

我在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 | |-------------------------------------------------------------------------------| 

我试图比较当前状态(最后一个单元格)与原始单元格(第一个单元格的值)。

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

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

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

下面的公式(以$G$2填充)应该可以做到这一点:

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

请注意,只有在第一个和最后一个条目之间没有其他空白单元格的情况下才能使用。

更新:这是来自Mr.Excel论坛的更多function选项:

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

这个必须作为“数组公式”input,这意味着在粘贴公式后必须按下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))) 

如果作为ARRAY公式input(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)))))}