我需要从Excel公式返回一个空单元格,但看起来Excel处理空字符串或对空单元格的引用与真正的空单元格不同.所以基本上我需要类似的东西
=IF(some_condition,EMPTY(),some_value)
我试着做一些事情
=IF(some_condition,"",some_value)
和
=IF(some_condition,,some_value)
并假设B1是一个空单元格
=IF(some_condition,B1,some_value)
但这些似乎都不是真正的空单元格,我猜是因为它们是公式的结果.当且仅当满足某些条件并且保持单元格真正为空时,是否有任何方法可以填充单元格?
编辑:按照建议,我试图返回NA(),但为了我的目的,这也没有用.有没有办法用VB做到这一点?
编辑:我正在构建一个工作表,从其他工作表中提取数据,格式化为将数据导入数据库的应用程序的特定需求.我没有权限更改此应用程序的实现,如果值为""而不是实际为空,则失败.
Excel没有任何方法可以执行此操作.
Excel中单元格中公式的结果必须是数字,文本,逻辑(布尔值)或错误.没有公式单元格值类型"空"或"空白".
我所看到的一种做法是使用NA()和ISNA(),但这可能会或可能不会真正解决您的问题,因为NA()被其他函数处理的方式存在很大差异(SUM(NA) ))是#N/A,而如果A1为空则SUM(A1)为0.
那么你将不得不使用VBA
.您将遍历范围内的单元格,测试条件,并删除匹配的内容.
就像是:
For Each cell in SomeRange If (cell.value = SomeTest) Then cell.ClearContents Next
对的,这是可能的.
如果满足条件,可以使湮灭公式评估为真实空白.它通过了ISBLANK公式的测试.我在FrankensTeam的集合中找到了这个看似不可能的技巧(参见下文).
设置3个步骤后,您将能够使用命名范围ISBLANK
,就像您在答案中所希望的那样:
=IF(A1 = "Hello world", GetTrueBlank, A1)
步骤1.将此代码放入VBA模块中.
Function Delete_UDF(rng) ThisWorkbook.Application.Volatile rng.Value = "" End Function
步骤2.在GetTrueBlank
在Sheet1
小区添加命名范围A1
与下面的公式:
=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")
第3步.使用自我消灭公式.放入单元格,比如GetTrueBlank
下面的公式:
=IF(A2=0,GetTrueBlank,A2)
B2
如果输入0,上面的公式将评估为trueblank B2
.
您可以在此处下载演示文件.
在上面的示例和FrankensTeam的所有其他示例中,将公式计算为trueblank会导致空单元格.使用ISBLANK公式检查结果结果为TRUE.这些是hara-kiri喜欢的公式.当满足条件时,公式从单元格中消失.达到了目标,尽管您可能希望公式不会消失.
您可以尝试使用此公式将结果返回到相邻单元格中,而不是自杀.玩得开心!
我已经通过以下示例获得了一个真实的空白作为一个公式结果由FrankensTeam重新审视:https: //sites.google.com/site/e90e50/excel-formula-to-change-the-value-of-another-细胞
也许这是作弊,但它的确有效!
我还需要一个表格作为图表的来源,我不希望任何空白或零单元格在图形上产生一个点.确实,您需要设置图形属性,选择数据,隐藏和清空单元格以"将空单元格显示为间隙"(单击单选按钮).这是第一步.
然后在可能最终得到您不想绘制的结果的单元格中,将公式放在IF语句中,其NA()
结果如下=IF($A8>TODAY(),NA(), *formula to be plotted*)
当无效单元格值出现时,这确实为所需图形提供了无点.当然这会使所有具有无效值的单元格都被读取#N/A
,而且这很麻烦.
要清除它,请选择可能包含无效值的单元格,然后选择条件格式 - 新规则.选择"仅格式化包含"的单元格,并在规则说明下从下拉框中选择"错误".然后在格式下选择字体 - 颜色 - 白色(或任何你的背景颜色).单击各种按钮退出,您应该看到具有无效数据的单元格看起来是空白的(它们实际上包含#N/A
但白色背景上的白色文本看起来是空白的.)然后链接图形也不会显示无效的值点.
这就是我为我使用的数据集做的.这似乎是错综复杂和愚蠢的,但它是学习如何使用上述VB解决方案的唯一选择.
我对所有数据进行了"复制",并将数据粘贴为"值".
然后我突出显示粘贴的数据并用一些字母"替换"(Ctrl- H)空单元格,我选择了q
因为它不在我的数据表的任何地方.
最后,我做了另一个"替换",并q
没有替换.
这个三步过程将所有"空"单元转换为"空白"单元格."我尝试通过简单地用空白单元替换空白单元来合并步骤2和3,但这不起作用 - 我不得不更换带有某种实际文本的空白单元格,然后用空白单元格替换该文本.
如果目标是当它实际上具有零值时能够将单元格显示为空,那么代替使用导致空单元格或空单元格的公式(因为没有empty()
函数),
你想要一个空白单元格,返回一个0
而不是""
那么
设置像这样的单元格的数字格式,你必须得到你想要的正数和负数(前两个项目用分号分隔).在我的情况下,我的数字是0,1,2 ......我希望0显示为空.(我从未弄清楚文本参数的用途,但似乎是必需的).
0;0;"";"text"@
尝试使用评估单元格LEN
.如果它包含一个公式LEN
将返回0
.如果它包含文本,则返回大于0
.
哇,很多人误解了这个问题.让单元格看起来很空洞很容易.问题是,如果您需要单元格为空,Excel公式不能返回"无值"但只能返回值.返回零,空格或甚至""是一个值.
因此,您必须返回"魔术值",然后使用搜索和替换或使用VBA脚本将其替换为无值.虽然你可以使用空格或"",但我的建议是使用一个明显的值,例如"NODATE"或"NONUMBER"或"XXXXX",这样你就可以很容易地看到它出现的位置 - 很难找到""在电子表格中.
如此多的答案返回一个LOOKS为空的值,但实际上并不像请求的单元格那样空...
根据要求,如果您确实需要一个返回空单元格的公式.这可以通过VBA实现.所以,这里的代码就是这样做的.首先编写一个公式,以便在希望单元格为空的任何地方返回#N/A错误.然后我的解决方案会自动清除包含#N/A错误的所有单元格.当然,您可以修改代码,根据您喜欢的任何内容自动删除单元格的内容.
打开"visual basic viewer"(Alt + F11)在项目资源管理器中找到感兴趣的工作簿,然后双击它(或右键单击并选择视图代码).这将打开"视图代码"窗口.在(常规)下拉菜单中选择"工作簿",在(声明)下拉菜单中选择"SheetCalculate".
在Workbook_SheetCalculate函数中粘贴以下代码(基于JT Grimes的答案)
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错误将保持未删除状态
使用COUNTBLANK(B1)>0
而不是ISBLANK(B1)
在您的IF
声明中.
不像ISBLANK()
,COUNTBLANK()
认为""
是空的并返回1.