Filtro de correspondência de padrões da macro do Excel

1

Alguém pode me ajudar a escrever isso como uma macro VB / Excel.

Eu gostaria de selecionar o seguinte em uma folha de dados e escrever em outra folha de dados.

Selecione as linhas nas quais, na coluna T , o campo contém a string SYDNEY-NEWC ou contém a string F3 , mas não contém F3 nos últimos 10 caracteres ou onde na coluna J o campo contém as string SYDNEY-NEWC ou contém a string M4 MTWY ou contém a string F3 , mas não contém a string F3 nos últimos 10 caracteres.

    
por Alessandra 30.11.2012 / 09:08

1 resposta

0

Este é um começo. É difícil e pronto, faltando muita verificação de erros e a função LEN irá cair se a célula contiver menos de 10 caracteres. Mas isso se moverá pelas linhas que correspondem ao seu padrão:

Sub MigrateData2()

Dim intRowCount As Integer
Dim intTargetRowCount As Integer
Dim intColumnCount As Integer

Dim CheckString1 As String
Dim CheckString2 As String

intTargetRowCount = 1

    For intRowCount = 1 To Range("A1").CurrentRegion.Rows.Count

        CheckString1 = Cells(intRowCount, 20) ' contents of column T
        CheckString2 = Cells(intRowCount, 10) ' contents of column J

        If CheckString1 = "SYDNEY-NEWC" Or InStr(CheckString1, "F3") _
          Or InStr(Len(CheckString1) - 10, CheckString1, "F3") > 0 _
          Or CheckString2 = "SYDNEY-NEWC" Or InStr(CheckString2, "M4 MTWY") _
          Or InStr(CheckString2, "F3") _
          Or InStr(Len(CheckString2) - 10, CheckString2, "F3") > 0 Then

            For intColumnCount = 2 To 20 ' change this last number to however many columns you have

              Sheets("Sheet2").Range("A1").Cells(intTargetRowCount, intColumnCount - 1).Value = _
              Sheets("Sheet1").Range("A1").Cells(intRowCount, intColumnCount).Value

            Next intColumnCount

            intTargetRowCount = intTargetRowCount + 1

        End If

    Next intRowCount

End Sub

SUPOSIÇÕES:

  • Seus dados de origem estão na Planilha1 e iniciam na célula A1
  • Sua planilha de destino é Planilha2 e você deseja começar a gravar os dados da célula A1
por 30.11.2012 / 13:34