【问题标题】:VBA Excel Change Content of another Cell based on content of one cellVBA Excel根据一个单元格的内容更改另一个单元格的内容
【发布时间】:2017-06-06 09:52:13
【问题描述】:

你能帮我解决这个问题吗? Excel 看起来像这样:

我希望自动化 2 个任务:

  1. 当 C 列中的单元格包含单词“已处理”时 => 清除 A 列中相应单元格中的内容
  2. 当 C 列中的单元格包含单词“blue”时 => 将 B 列中的相应单元格更改为 0

我尝试过偏移、循环和其他各种方法,但似乎无法正确使用。请帮忙。

【问题讨论】:

  • 请理解 Stack Overflow 不是免费的代码编写服务,因此您需要edit 提出您的问题并展示您已经尝试过的代码,并 (1) 告诉我们您的代码做了什么以及什么你期望它做到。 (2) 如果有任何错误信息,您会在哪里得到。 (3) 你的代码有什么问题以及卡在哪里。
  • 如果您的目标已经实现,请接受答案。 (点击答案旁边的绿色复选标记)

标签: vba excel


【解决方案1】:

使用InStr-Function 来检查它是否包含子字符串。如需更多信息,请查看here

【讨论】:

  • 谢谢你的回答:)
【解决方案2】:
Sub removeprocessed()
Dim Nlines As Long
Dim i As Long
Nlines = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
For i = 2 To Nlines
    If 0 <> InStr(1, Cells(i, 3).Value, "processed") Then
        Cells(i, 1).Value = ""
    End If
    If 0 <> InStr(1, Cells(i, 3).Value, "blue") Then
        Cells(i, 2).Value = 0
    End If
Next
End Sub

按照@UGP 的建议使用 InStr

【讨论】:

  • (1) 如果您发布代码,您应该遵循VBA Best Practices 指南:例如始终完全限定单元格和范围 (2) 除非与旧 API 通信(而不是始终使用 Long),否则切勿使用 Integer:Excel 的行数超过 Integer 可以处理的行数。 (3) 将值设置为字符串.Value = "0" 绝不是一个好主意,而应使用.Value = 0 (4) 我知道您只是想提供帮助,但我认为我们不应该回答离题的问题,因为要求代码仅限。
  • @PalimPalim 非常感谢您的帮助。非常感谢
  • @Peh 注意到这些。我很抱歉,因为我是该网站的新手。