我需要从Excel公式返回一个空单元格,但Excel似乎将空字符串或空单元格引用与真正的空单元格区别对待。所以本质上我需要
=IF(some_condition,EMPTY(),some_value)
我试着去做一些事情
=IF(some_condition,"",some_value)
and
=IF(some_condition,,some_value)
假设B1是空单元格
=IF(some_condition,B1,some_value)
但这些似乎都不是真正的空单元格,我猜是因为它们是公式的结果。是否有办法填充一个细胞当且仅当满足某些条件,否则保持细胞真正空?
编辑:按照建议,我尝试返回NA(),但对于我的目的,这也不工作。有办法用VB来做这个吗?
编辑:我正在构建一个工作表,它从其他工作表中拉入数据,这些工作表被格式化为将数据导入数据库的应用程序的非常特定的需求。我没有权限更改此应用程序的实现,如果值为“”而不是实际为空,则会失败。
如果您正在使用HLOOKUP和VLOOKUP等查找函数将数据带入工作表,请将函数放在括号内,函数将返回一个空单元格而不是{0}。例如,
如果查找单元格为空,将返回零值:
=HLOOKUP("Lookup Value",Array,ROW,FALSE)
如果查找单元格为空,则返回空单元格:
=(HLOOKUP("Lookup Value",Array,ROW,FALSE))
我不知道这是否适用于其他功能……我还没试过。我使用Excel 2007来实现这一点。
Edit
为了让IF(A1="",,)返回为真,需要在同一个单元格中用&分隔两次查找。解决这个问题的简单方法是使第二个查找单元格位于行的末尾,并且始终为空。
也许这是作弊,但很有效!
我还需要一个表作为图形的源,我不希望任何空白或零单元格在图形上产生一个点。的确,您需要设置图形属性,选择数据,隐藏和空单元格以“显示空单元格为间隙”(单击单选按钮)。这是第一步。
然后,在单元格中,可能会以不希望绘制的结果结束,将公式放在带有NA()结果的IF语句中,如=IF($A8>TODAY(),NA(), *formula to be *)
当出现无效的单元格值时,这将给出没有点的所需图形。当然,这使得所有具有无效值的单元格都要读取#N/A,这很混乱。
To clean this up, select the cell that may contain the invalid value, then select conditional formatting - new rule. Select 'format only cells that contain' and under the rule description select 'errors' from the drop down box. Then under format select font - colour - white (or whatever your background colour happens to be). Click the various buttons to get out and you should see that cells with invalid data look blank (they actually contain #N/A but white text on a white background looks blank.) Then the linked graph also does not display the invalid value points.
如此多的答案,返回一个值,看起来是空的,但实际上不是一个空的作为单元格请求…
如果您确实想要一个返回空单元格的公式。这是可能的通过VBA。这里是代码,可以做到这一点。首先编写一个公式,在您希望单元格为空的地方返回#N/ a错误。然后我的解决方案自动清除所有包含#N/A错误的单元格。当然,您可以根据自己的喜好修改代码以自动删除单元格的内容。
打开visual basic viewer (Alt + F11)
在项目资源管理器中找到感兴趣的工作簿并双击它(或右击并选择查看代码)。这将打开“视图代码”窗口。在(常规)下拉菜单中选择“工作簿”,在(声明)下拉菜单中选择“小型张计算”。
将以下代码(基于J.T. Grimes的回答)粘贴到Workbook_SheetCalculate函数中
For Each cell In Sh.UsedRange.Cells
If IsError(cell.Value) Then
If (cell.Value = CVErr(xlErrNA)) Then cell.ClearContents
End If
Next
将文件保存为启用宏的工作簿
注:这个过程就像一把手术刀。它将删除任何计算为#N/A错误的单元格的全部内容,因此要注意。它们会消失,如果不重新输入它们曾经包含的公式,你就不能把它们拿回来。
NB2:很明显,当你打开文件时,你需要启用宏,否则它将无法工作,#N/A错误将保持未删除
是的,这是可能的。
如果满足条件,可以让公式返回true - blank。通过了ISBLANK公式的检验。唯一不方便的是,当条件满足时,公式将消失,您将不得不重新输入它。您可以设计一个公式,使其能够将结果返回给相邻的单元格,从而避免自毁。是的,这也是可能的。
你所需要的是设置一个命名范围,比如GetTrueBlank,然后你就可以像你的问题一样使用下面的模式:
=IF(A1 = "Hello world", GetTrueBlank, A1)
步骤1。把这段代码放到VBA的Module中。
Function Delete_UDF(rng)
ThisWorkbook.Application.Volatile
rng.Value = ""
End Function
步骤2。在Sheet1的A1单元格中,使用以下公式添加命名范围GetTrueBlank:
=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")
就是这样。没有进一步的步骤了。用自灭公式。在单元格B2中输入以下公式:
=IF(A2=0,GetTrueBlank,A2)
如果在A2中输入0,则B2中的上述公式将计算为trueblank。
您可以在这里下载演示文件。
在上面的示例中,将公式求值为trueblank会在空单元格中得到结果。用ISBLANK公式检查单元格的结果为TRUE。这是切腹自杀。当满足条件时,公式从单元格中消失。目标达到了,尽管您可能希望公式不要消失。
您可以修改公式以在相邻单元格中返回结果,这样公式就不会自行终止。查看如何在相邻单元格中获取UDF结果。
我在《the FrankensTeam》中看到了一个获得trueblank作为公式结果的例子:
https://sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another-cell