【问题标题】:Add a Value Automatically to a Cell Based on Another Cell基于另一个单元格自动向一个单元格添加值
【发布时间】:2020-01-03 19:33:14
【问题描述】:

我想使用 VBA 向基于另一个单元格的单元格添加一个值,但我不确定如何。我已经在互联网上搜索过它但找不到任何东西。

我有一个表格,在 C 列上,如果任何单元格包含文本“MAM”(因为它可能有 MAM-565),则将单元格 A 的值更改为“错误”,但如果它包含“ NAC”,然后将值更改为“正确”。它应该与找到的文本在同一行。

另外,我想在每次填充 D 中的单元格时自动将日期添加到单元格 E。 这是我已经拥有的代码:

Private Sub Worksheet_Change(ByVal Target As Range)

'Add Issue Type'
Dim Code As Range
Set Code = Range("C2:C100000")

For Each Cell In Code
If InStr(1, Cell, "NAC") Then
Range("A2:A10000").Value = "Correct"
ElseIf InStr(1, Cell, "MAM") Then
Range("A2:A10000").Value = "Wrong"

End If
Next

End Sub

我的桌子是这样的: Table

提前谢谢大家:)

【问题讨论】:

  • 在我看来,您想要Change 事件,而不是SelectionChange 事件?
  • 这听起来至少有两个单独的问题。问题 A)检查 C 列中的单元格并相应地更改 A 列(同一行),问题 B)在 D 列更改时将日期添加到 E 列。在这种情况下,这些应该是两个单独的线程。另外,我没有看到问题/特定问题,只是对代码的请求。我不是专业人士,但是您发布的代码看起来不会像您正在尝试的那样做任何事情。你能进一步分解这个问题并删除不必要的代码吗?见 --> stackoverflow.com/help/mcve
  • 每次 D 列发生变化时,是否要检查所有 C 列?
  • @FreeSoftwareServers 我认为它只是一个,因为它可能需要相同的代码。但我想根据单元格 C 上的文本在单元格 A 上添加一个值。
  • @BigBen 好吧,我对事件了解不多,但是在互联网上搜索可能会有所帮助,尽管我不知道要添加什么代码。

标签: excel vba


【解决方案1】:

自动添加日期戳:

Private Sub Worksheet_Change(ByVal Target As Range)      
    Dim rng as Range
    Set rng = Intersect(Target, Me.Range("D:D"))
    If rng Is Nothing Then Exit Sub

    On Error GoTo SafeExit
    Application.EnableEvents = False

    Dim cell as Range
    For Each cell in rng
         If Not IsEmpty(cell) Then ' don't do anything if cell was cleared
             cell.Offset(,1).Value = Date
         End If
    Next

SafeExit:
    Application.EnableEvents = True
End Sub

就正确/错误而言,这可以通过公式(ISNUMBER(SEARCH(...)) 轻松完成。我认为这里不需要 VBA。

更好的是,使用 Ctrl+T 创建一个表。 Excel 会自动将 A 列中的公式添加到新行中。

【讨论】:

  • 非常感谢,您说得对,公式每次都在新行中添加。该代码也可以正常工作。
  • 太棒了!如果单元格被清除,我做了一个轻微的编辑,不添加日期戳......如果这不是你想要的,请忽略编辑。
  • 还是比较好。没有那个我无法删除行。再次非常感谢你:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-31
  • 2015-11-29
  • 2013-12-31
相关资源
最近更新 更多