Конкатенация с использованием оператора Case с несколькими условиями - PullRequest
0 голосов
/ 24 июня 2019

Я пытаюсь объединить код уровня и код Cap, где Cap Level = 2. Я смог успешно выполнить конкатенацию раньше, используя инструкцию case, без условия, что Cap Level = 2. Однако теперь, когда я пытаясь добавить это условие, я получаю сообщение об ошибке «Mistmatch Type». Я попытался установить диапазон ("E3: E24"). Значение = 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 ]

1 голос
/ 24 июня 2019

В коде есть несколько вещей, которые приведут к тому, что он не будет работать, но главное - цикл для проверки каждой ячейки.

Сделайте это:

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
0 голосов
/ 25 июня 2019

Вам действительно нужно использовать VBA для этого? Это похоже на то, что вы можете сделать просто с помощью оператора if на Excel. = Если (В2 = 2, CONCAT (А1, "", D1), ""). Это, конечно, при условии, что столбцы перечислены выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...