vba excel: как копировать символы из одной ячейки в другую - PullRequest
0 голосов
/ 13 февраля 2019

Я новичок в мире VBA и учусь на ваших предложениях.

Я искал несколько решений, пробовал их, но они не были идеальными для моей проблемы.

Вот ссылки

Найти строку в ячейке с помощью VBA

Как подсчитать количество определенного символа в ячейке с помощью Excel VBA

Какая команда в VBA может подсчитать количество символов в строковой переменной?

Что мне нужно, так это возможность проверить символы в Input исовпадать с Match list key.После сопоставления строки скопируйте символы I в вывод.

Here and example in sheet

Как видите, первые строки просты для сопоставления, но в ячейке A8 (например) есть строка из четырнадцати символов.В этом случае мне нужно, чтобы, когда есть строка, начинающаяся с CMXXAB, совпадение было с WT (ВСЕГДА!).То же самое происходит, когда у нас есть A12: он начинается с ETRxxx и, после того, как совпадение начнется на выходе, как JAZZ.

1 Ответ

0 голосов
/ 13 февраля 2019

Я думаю, что это поможет вам:

Option Explicit

Sub test()

    Dim LastrowA As Long, i As Long, AppearA As Long, AppearB As Long
    Dim strA As String, strB As String


    With ThisWorkbook.Worksheets("Sheet1")

        LastrowA = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 1 To LastrowA

            strA = .Range("A" & i).Value
            strB = .Range("C" & i).Value

            'Check if strA appears in strB
            AppearA = InStr(1, strB, strA)
            If AppearA > 0 Then
                .Range("B" & i).Value = strA
                Exit For
            End If

            'Check if strB appears in strA
            AppearB = InStr(1, strA, strB)
            If AppearB > 0 Then
                .Range("B" & i).Value = strB
                Exit For
            End If

        Next i

    End With

End Sub

Большое вам спасибо за помощь.Через несколько дней я нашел решение проблемы в моем вопросе.На самом деле, это мое решение, и я надеюсь, что помогу кому-нибудь, нужно что-то вроде этого.

Sub AssociazioneRotabiliPerPivot()

Dim LastrowA, LastrowC As Long, i, j As Long, AppearA As Long, AppearB As Long
Dim strA As String, strB As String

With ThisWorkbook.Worksheets("sheet1")

    LastrowA = .Cells(.Rows.count, "A").End(xlUp).Row
    LastrowC = .Cells(.Rows.count, "C").End(xlUp).Row

    For j = 1 To LastrowC   

        For i = 1 To LastrowA   

            strA = .Range("A" & i).Value
            strB = .Range("C" & j).Value

            AppearC = InStr(1, strA, strB)
            If AppearB > 0 Then
                .Range("B" & i).Value = strB
            End If

            If (InStr(1, strA, "CM") Or InStr(1, strA, "C4551R")) > 0 Then

                .Range("B" & i).Value = "WT"   

            ElseIf InStr(1, strA, "ETR425") > 0 Then   

                .Range("B" & i).Value = "JAZZ"  

            End If

        Next i

    Next j

End With

End Sub

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