Bry*_*ard 210 excel excel-formula
我需要从Excel公式返回一个空单元格,但看起来Excel处理空字符串或对空单元格的引用与真正的空单元格不同.所以基本上我需要类似的东西
=IF(some_condition,EMPTY(),some_value)
Run Code Online (Sandbox Code Playgroud)
我试着做一些事情
=IF(some_condition,"",some_value)
Run Code Online (Sandbox Code Playgroud)
和
=IF(some_condition,,some_value)
Run Code Online (Sandbox Code Playgroud)
并假设B1是一个空单元格
=IF(some_condition,B1,some_value)
Run Code Online (Sandbox Code Playgroud)
但这些似乎都不是真正的空单元格,我猜是因为它们是公式的结果.当且仅当满足某些条件并且保持单元格真正为空时,是否有任何方法可以填充单元格?
编辑:按照建议,我试图返回NA(),但为了我的目的,这也没有用.有没有办法用VB做到这一点?
编辑:我正在构建一个工作表,从其他工作表中提取数据,格式化为将数据导入数据库的应用程序的特定需求.我没有权限更改此应用程序的实现,如果值为""而不是实际为空,则失败.
Joe*_*son 73
Excel没有任何方法可以执行此操作.
Excel中单元格中公式的结果必须是数字,文本,逻辑(布尔值)或错误.没有公式单元格值类型"空"或"空白".
我所看到的一种做法是使用NA()和ISNA(),但这可能会或可能不会真正解决您的问题,因为NA()被其他函数处理的方式存在很大差异(SUM(NA) ))是#N/A,而如果A1为空则SUM(A1)为0.
J.T*_*mes 50
那么你将不得不使用VBA.您将遍历范围内的单元格,测试条件,并删除匹配的内容.
就像是:
For Each cell in SomeRange
If (cell.value = SomeTest) Then cell.ClearContents
Next
Run Code Online (Sandbox Code Playgroud)
Prz*_*min 37
对的,这是可能的.
如果满足条件,可以使湮灭公式评估为真实空白.它通过了ISBLANK公式的测试.我在FrankensTeam的集合中找到了这个看似不可能的技巧(参见下文).
设置3个步骤后,您将能够使用命名范围ISBLANK,就像您在答案中所希望的那样:
=IF(A1 = "Hello world", GetTrueBlank, A1)
Run Code Online (Sandbox Code Playgroud)
步骤1.将此代码放入VBA模块中.
Function Delete_UDF(rng)
ThisWorkbook.Application.Volatile
rng.Value = ""
End Function
Run Code Online (Sandbox Code Playgroud)
步骤2.在GetTrueBlank在Sheet1小区添加命名范围A1与下面的公式:
=EVALUATE("Delete_UDF("&CELL("address",Sheet1!A1)&")")
Run Code Online (Sandbox Code Playgroud)
第3步.使用自我消灭公式.放入单元格,比如GetTrueBlank下面的公式:
=IF(A2=0,GetTrueBlank,A2)
Run Code Online (Sandbox Code Playgroud)
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-细胞
小智 20
也许这是作弊,但它的确有效!
我还需要一个表格作为图表的来源,我不希望任何空白或零单元格在图形上产生一个点.确实,您需要设置图形属性,选择数据,隐藏和清空单元格以"将空单元格显示为间隙"(单击单选按钮).这是第一步.
然后在可能最终得到您不想绘制的结果的单元格中,将公式放在IF语句中,其NA()结果如下=IF($A8>TODAY(),NA(), *formula to be plotted*)
当无效单元格值出现时,这确实为所需图形提供了无点.当然这会使所有具有无效值的单元格都被读取#N/A,而且这很麻烦.
要清除它,请选择可能包含无效值的单元格,然后选择条件格式 - 新规则.选择"仅格式化包含"的单元格,并在规则说明下从下拉框中选择"错误".然后在格式下选择字体 - 颜色 - 白色(或任何你的背景颜色).单击各种按钮退出,您应该看到具有无效数据的单元格看起来是空白的(它们实际上包含#N/A但白色背景上的白色文本看起来是空白的.)然后链接图形也不会显示无效的值点.
小智 10
这就是我为我使用的数据集做的.这似乎是错综复杂和愚蠢的,但它是学习如何使用上述VB解决方案的唯一选择.
q因为它不在我的数据表的任何地方.q没有替换. 这个三步过程将所有"空"单元转换为"空白"单元格."我尝试通过简单地用空白单元替换空白单元来合并步骤2和3,但这不起作用 - 我不得不更换带有某种实际文本的空白单元格,然后用空白单元格替换该文本.
小智 9
如果目标是当它实际上具有零值时能够将单元格显示为空,那么代替使用导致空单元格或空单元格的公式(因为没有empty()函数),
你想要一个空白单元格,返回一个0而不是""那么
设置像这样的单元格的数字格式,你必须得到你想要的正数和负数(前两个项目用分号分隔).在我的情况下,我的数字是0,1,2 ......我希望0显示为空.(我从未弄清楚文本参数的用途,但似乎是必需的).
0;0;"";"text"@
Run Code Online (Sandbox Code Playgroud)小智 7
哇,很多人误解了这个问题.让单元格看起来很空洞很容易.问题是,如果您需要单元格为空,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
Run Code Online (Sandbox Code Playgroud)
将文件另存为启用宏的工作簿
注意:这个过程就像一把手术刀.它将删除评估为#N/A错误的任何单元格的全部内容,因此请注意.他们会去,你不能重新进入他们曾经包含的公式.
NB2:显然你需要在打开文件时启用宏,否则它将无法工作,#N/A错误将保持未删除状态
我使用的是一个小技巧。我使用 T(1),它返回一个空单元格。T 是 Excel 中的一个函数,如果它是字符串,则返回其参数,否则返回空单元格。所以,你能做的是:
=IF(condition,T(1),value)
Run Code Online (Sandbox Code Playgroud)
小智 5
This answer does not fully deal with the OP, but there are have been several times I have had a similar problem and searched for the answer.
If you can recreate the formula or the data if needed (and from your description it looks as if you can), then when you are ready to run the portion that requires the blank cells to be actually empty, then you can select the region and run the following vba macro.
Sub clearBlanks()
Dim r As Range
For Each r In Selection.Cells
If Len(r.Text) = 0 Then
r.Clear
End If
Next r
End Sub
Run Code Online (Sandbox Code Playgroud)
这将清除当前显示""或只有公式的任何单元格的内容
| 归档时间: |
|
| 查看次数: |
679793 次 |
| 最近记录: |