结合使用具有多个条件的案例陈述

时间:2019-06-24 20:42:06

标签: excel vba

我正在尝试将Cap Level = 2的Tier Code和Cap Code连接起来。我能够在不使用Cap Level = 2的情况下使用case语句成功地进行串联。但是,现在尝试添加该条件时,我不断收到错误“ Type Mistmatch”。我尝试设置Range(“ E3:E24”)。Value = 2和=“ 2”。两种方式,我仍然会收到错误。

我的数据当前如下所示:

enter image description here

我已经处理了至少一个小时,并阅读了有关具有多个条件/条件的案例陈述的其他问题,但我无法使我的代码正常工作。

Sub Concat_ParentCode_Cap1_001()

With Worksheets("PD Code Structure")

Dim ParentCode As Range
Dim TierCode As String
Dim CapCode As String

CapCode = "FS_CAP_1_001"
TierCode = "FS_Tier_1"
Set ParentCode = Range("F3:F24")

        Select Case True
            Case CapCode = "FS_CAP_1_001" And Range("E3:E24").Value = "2"
                ParentCode = TierCode & "." & CapCode
        End Select

End With
End Sub

我希望我的数据看起来像这样:

enter image description here

2 个答案:

答案 0 :(得分:1)

提供的代码中有几件事会使它不太起作用,但主要的事情是循环检查每个单元格。

试一下:

Option Explicit

Sub Concat_ParentCode_Cap1_001()

    Dim tierCode As String
    tierCode = "FS_TIER_1."

    With Worksheets("PD Code Structure")

        Dim capCode As Range

        For Each capCode In .Range("F2:F24")

            If Len(capCode.Offset(, -1)) Then

                Dim capParent As String
                capParent = capCode.Value

            End If

            If capCode.Offset(, -2).Value = 2 Then
                capCode.Offset(, -1).Value = tierCode & capParent
            End If

        Next

    End With

End Sub

答案 1 :(得分:0)

您真的需要为此使用VBA吗?这看起来就像您可以在excel上使用if语句来执行的操作。 = if(B2 = 2,CONCAT(A1,“。”,D1),“”)。当然,这是假设这些列在上面的A-D中列出。