我正在使用导出的表格在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)中包含值的第一个单元格,而不仅仅是数字。我尝试使用索引和匹配组合,但我无法理解它。
答案 0 :(得分:3)
以下公式(在$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)))
答案 1 :(得分:1)
如果作为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)))))}