1

Excel 背景
我有 2 个 excel 列和长的行记录。(仅作为示例,因为我有超过 10 列)

A 列 - 是“是或否” B 列 - 是备注。可以输入我需要的任何内容


它是如何工作
的这是一个订购系统,如果日期延迟,A列将显示“是”如果没有延迟,它将显示“否”


我需要
我需要 VBA 代码来执行以下操作:

如果 B2 列包含文本“无延迟”,则 A2 列将从“是”变为“否”


我测试过的

    Private Sub UpdateColumnA()
    Dim x As Long
    For x = 4 To 65536
    Dim InStr As String

    If InStr(1, Sheet1.Range("$M$" & x), "No Delay") Then
        Sheet1.Range("$K$" & x) = Sheet1.Range("$K$" & x) & "No"
        End If

    Next
    End Sub

我在上面遇到的问题是,A2 列“是”将变为“是。我需要将 Yes 替换为 No 而不是添加到现有文本中。

如果 B2 文本“ No Delay ”不完全匹配,它根本不起作用,因此我希望它不区分大小写,例如“nO Delay”“No DeLAy”也可以。

4

1 回答 1

2

选项 vbTextCompare 可以使比较不区分大小写:

InStr(1, Sheet1.Range("$M$" & x), "No Delay", vbTextCompare)

一个简单的分配将避免YesNo单元格中值(“”)的串联:

Sheet1.Range("$K$" & x).Value = "No"
于 2012-12-28T17:57:33.450 回答