如何通过"如果"结果到另一个单元格

时间:2016-01-14 13:01:31

标签: excel vba if-statement

我正在使用以下列创建商务旅行费用表: "A" = Status; "B" = planned costs(其他栏目现在并不重要) 专栏" A"有"计划,完成,取消"下拉列表值。 专栏" B"单元格中始终有一个数字。 (所以在B栏中我不能写任何函数,因为它会覆盖价格)。

当列中的状态为" A"时,我想要的是标准或代码。更改为"取消",然后旁边的计划成本变为0或清除单元格。

我开始使用支持表执行此操作,我在其中编写了一个简单的IF语句(在sheet2随机单元格中)=if(A2="cancelled"; B2=0; "")。但是这样它就不起作用了。简单地将错误结果输入到随机单元格中。

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:0)

=if(A2="cancelled"; B2=0; ""):几件事

您使用的是分号而不是逗号 如果此公式进入B列

,您也不需要明确说明B2 = 0

答案 1 :(得分:0)

正如已经说过的:你不能在没有VBA的情况下更换电池。在表格的代码窗格中你需要这样的东西:

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Cells.Count = 1 And Target.Column = 1 Then
    If Target.Value = "cancelled" Then Target.Offset(0, 1).Value = 0
  End If
End Sub

或者在"帮助栏中进行(如前所述)"方式如下:

=$B2*($A2<>"cancelled")

答案 2 :(得分:0)

=if(A2="cancelled",0,B2)

将此公式放在C2中,C2会根据需要显示结果。

答案 3 :(得分:0)

您可以创建第三列(perhabs hidden),其中包含现在存在于“B”中的值。然后在“B”列中使用函数=IF(A2="cancelled";0;C2)

答案 4 :(得分:0)

我认为你不能完全按照你在其他一些细胞中使用公式所要求的那样:

Making Excel functions affect 'other' cells

'= if(A2 =“cancelled”; B2 = 0;“”)如果A2恰好被取消,如果B2等于0,则简单地返回“问题”的逻辑值。这不是你想要的。

您可以创建一个VBA代码,每次工作表中的内容发生变化时都会执行该代码。

automatically execute an Excel macro on a cell change

按Alt + F11,然后双击要使用该功能的工作表并添加代码

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 And Target.Value = "cancelled" Then
    Target.Offset(0, 1) = 0
End If

End Sub

但是我强烈建议不要使用这个解决方案,因为现在你只需要在B列的单元格中覆盖任何值为0.因此,您将丢失此单元格中的先前数据。

我会做什么:

1)如果B列中的数据来自其他地方(非手动写入),那么我会在那里写入函数,即“= if(A2 =”cancelled; 0; .get_original_value)“

2)如果输入是手动的,我会添加另一列以保持“真实值”,这将像点1中的函数一样工作。

3)或者代替2)您可以通过使用条件格式仅基于A列中的值更改B列中单元格的显示 你可以在这里开始阅读 http://www.excel-easy.com/data-analysis/conditional-formatting.html 您最有可能计算一些聚合(如总和),并希望取消的值为0,以便进行此计算。通过仅更改显示值,值将保持非零,因此您必须使用SUMIF并排除取消的值,而不是常规SUM,例如= SUMIF(A:A;“&lt;&gt; cancelled”; B:B)