【问题标题】:Microsoft Excel : Display Error if Column A is blank and Column B is not blankMicrosoft Excel:如果 A 列为空且 B 列不为空,则显示错误
【发布时间】:2016-01-18 05:00:43
【问题描述】:

用户需要输入具有 2 列 A 和 B 的 Excel 工作表。 如果 B 有值,则 A 不能为空。 如果 A 为空且 B 有值,则 Excel 工作表必须抛出错误(要求用户在 A 中输入值)或用颜色突出显示 A 单元格?

如何做到这一点?

谢谢, 迪潘·马亨德兰。

【问题讨论】:

  • 使用数据验证自定义公式。 Google 有很多关于如何做到这一点的教程。
  • 你试过了吗?
  • 我尝试使用 if 空白公式,但没有按预期锻炼。
  • 欢迎来到 StackOverFlow @DeepanMahendran。通常,该站点不是“给我代码”,而是更多的“帮助我找到我的问题”站点。话虽如此,并将其视为您的第一篇文章,我在下面提供了答案。

标签: vba excel conditional-formatting


【解决方案1】:

使用 VBA

下面是我相信你想要什么的开始。

您需要将其粘贴到 WorkBook VBA 项目中的工作表特定模块中。详情见下图。

见下面的脚本:

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim TargetRowColumnAValue As Range
    Dim TargetRowColumnBValue As Range
    Dim CurrentWorkSheet As Worksheet

    Set CurrentWorkSheet = ThisWorkbook.ActiveSheet
    Set TargetRowColumnAValue = CurrentWorkSheet.Cells(Target.Row, "A")
    Set TargetRowColumnBValue = CurrentWorkSheet.Cells(Target.Row, "B")

    If Not TargetRowColumnBValue = Empty Then

        If TargetRowColumnAValue = Empty Then MsgBox "Please ensure that data has been inserted into Column A!"

    End If

    If Not TargetRowColumnAValue = Empty Then

        If TargetRowColumnBValue = Empty Then MsgBox "Please ensure that data has been inserted into Column B!"

    End If

End Sub

然后您可以向单元格等添加或删除任何其他格式。

使用条件格式

使用 条件格式 选择整个 B 列,然后在“样式”部分的主页选项卡中,选择 条件格式,然后选择新规则,然后选择“使用公式确定哪个要格式化的单元格。然后将以下公式粘贴到=IF(INDIRECT("RC1",FALSE) <> "", TRUE, FALSE) 中,然后您可以选择要在 B 列单元格中填充的任何颜色。然后,对于相应 A 列中的任何值,B 列中的单元格将突出显示不为空的单元格。

同样选择A列,但使用公式=IF(INDIRECT("RC2",FALSE) <> "", TRUE, FALSE)

注意 例如,如果 B 列单元格除了为空之外还有任何内容,则 A 列单元格将被高亮显示,这包括一个空格。然后,您应该使用 Data Validation 和一条引用用户可能输入的有效值的消息。

【讨论】:

  • @DeepanMahendran 是否为您提供了解决方案?
  • @Jean-PierreOosthuizen 我们可以通过使用条件格式来保持简单
  • @Linga OP 要求提供错误消息或突出显示,如何通过条件格式激活消息?
  • @Jean-PierreOosthuizen 谢谢我的朋友,我已经在我的回答中更新了它:)
  • @Jean-PierreOosthuizen - 成功了!我只需要删除第二个 lF 条件。
【解决方案2】:

请将此公式粘贴到A

=IF(B1<>"","?","")

然后在 A 列中进行条件格式化,其值为 ? 的颜色。因此,如果列 B 具有值且 A 为空白,则将突出显示 A 列。

或者您可以通过使用以下公式进行条件格式化来保持简单

=AND($B1<>"",$A1="")

选择A列,然后转到常规格式选择“使用公式确定要格式化的单元格”并输入上述公式并选择要突出显示的颜色,然后点击确定..

希望这是你需要的..

【讨论】:

  • 感谢您帮助我。但是我需要在 A 列中有一个值,如果使用上面的公式,我将无法输入任何值。例如:在 A 列中,我将始终只有 2 个值。 “1”或“2”。
【解决方案3】:

使用条件格式。制定新规则,插入此公式并选择要突出显示的颜色。输入此公式并选择您需要格式化的范围。在这种情况下,我做了A1:A100

=IF($A1<>"","",INDIRECT("RC[1]",0))

【讨论】:

  • @Linga,我不确定我是否关注?它可以满足 OP 的要求还是我错过了什么?
  • @Dave 如果列 B 不为空,则应突出显示 A 列,如果我没有错,则 A 为空,您的公式没有这样做
  • @Linga,你是对的,我想念这个问题。我认为如果 B 列是空的。我会更新我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多