如何规避Excel IF函数的深度限制?
对于 Excel 公式,我需要包含数值的单元格列表中的第一个单元格:
A | B | C | ... | Z |
-----------------------------
| 0.1 | 0.4 | ... | =0.1
| | 0.2 | ... | =0.2
我使用此架构:
IF(ISNUMERIC(A1);A1;IF(ISNUMERIC(B1);A2;IF(ISNUMERIC(C1);C1;IF(...))))))))
不幸的是,这只适用于七列,因为 Excel 中的最大长度受到限制。
有什么方法可以重新表述这个公式,这样它就不会因为每增加一列而变得更深?
For an Excel formula I need the first cell out of a list of cells which contains a numeric value:
A | B | C | ... | Z |
-----------------------------
| 0.1 | 0.4 | ... | =0.1
| | 0.2 | ... | =0.2
I use this schema:
IF(ISNUMERIC(A1);A1;IF(ISNUMERIC(B1);A2;IF(ISNUMERIC(C1);C1;IF(...))))))))
Unfortunately this only works for seven columns, because the maximum length is limited in Excel.
Is there any way to re-phrase this formula so that it doesn't get deeper with every additional column?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
好的,让我们看看。试试
这个 sumproduct 计算空格数,然后索引在
空格数 + 1
的单元格中查找值希望有帮助。
OK, lets see. Try this
The sumproduct counts the number of blanks, then the index looks up the value in the cell where
number of blanks + 1
Hope that helps.
在单个单元格中,您可以使用数组公式来执行此操作:
Isnumber 在 Excel 2007 中提供了测试
将结果乘以 column()
使用 if 语句来帮助执行以下 min 函数:
使用 min 函数来标识第一个数字列。
当你想创建数组公式时,请记住使用 Ctrl-Shift-Enter,而不仅仅是 Enter。
如果您需要该功能,这还会找到跨多行的第一个使用的列。
In a single cell you can do this with an array formula:
Isnumber provides the test in Excel 2007
Multiply the result by column()
Use an if statement to help the following min function along:
Use the min function to identify the first numeric column.
Remember to use Ctrl-Shift-Enter when you want to make an array formula, not just enter.
This also finds the first used column across multiple rows should you need that functionality.
也许这可能会有所帮助 XL:如何确定稀疏数组中的顶部/底部使用的单元
Perhaps this may help XL: How to Determine Top/Bottom Used Cells in a Sparse Array
旁观者的答案有效(假设第一个数字后面的单元格总是被填充)。
您还可以在 VBA 模块中编写自己的函数。
astanders answer works (with the assumption that the cells following the first number are allways filled).
You can also write your own function in a VBA Module.