VBA 触发包含 Left() 的 IF 语句

问题描述 投票:0回答:1

我正在尝试在特定情况下动态地将 2 个单元格连接在一起,但我无法触发任何公式更改。如果 A 列显示“是”,并且 B 列中相应的事件名称以年份和字母“C”开头,我想将相应的日期、空格和事件名称连接到 D 列中。 “2022年2月22日2022 C00EB24HNA”

在所附的屏幕截图中,我突出显示了应连接的行。

截图

这是我正在使用的 For Each 循环。我在第二个 if 语句中一直遇到问题,“If "left(RC[1...."

    Dim Response As Range
    For Each Response In Selection
        If Response = "Yes" Then
            If "left(RC[1], 6)" = "2020 C" Or _
                "left(RC[1], 6)" = "2021 C" Or _
                "left(RC[1], 6)" = "2022 C" Or _
                "left(RC[1], 6)" = "2023 C" Or _
                "left(RC[1], 6)" = "2024 C" Or _
                "left(RC[1], 6)" = "2025 C" Then
                
                ActiveCell.Offset(0, 3).Select
                ActiveCell.FormulaR1C1 = _
                        "=(CONCAT(RC[-1],"" "",RC[-2]))"
                ActiveCell.Offset(-1, -3).Select
            Else
            End If
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Next Response

我的语法可能有问题,但我不知道如何修复它。任何指导将不胜感激!谢谢!

excel vba if-statement foreach boolean
1个回答
0
投票

"left(RC[1], 6)"
是vba的一个字符串,vba正在尝试比较两个字符串而不是结果。

并删除所有具有 .Select 的行和整个 Else 块,这些都不需要。

    Dim Response As Range
    For Each Response In Selection
        If Response = "Yes" Then
            If cLng(Left(Response.Offset(,2),4)) >= 2020 _
                And cLng(Left(Response.Offset(,2),4)) <= 2025 _
                And Mid(Response.Offset(,2),6,1) = "C" Then 
                Response.Offset(, 3).FormulaR1C1 = _
                        "=(CONCAT(RC[-1],"" "",RC[-2]))"
            End If
        End If

    Next Response
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.