none
Localizar apenas o mes em 01/mar/2012""". RRS feed

  • Pergunta

  • Boa tarde.

    Tenho uma planilha que tem 10 colunas entre elas "DATA", gostaria de localizar e copiar todas de acordo com o mes selecionado em uma combobox.

    Por exemplo escolhi mes de marco, gostaria de localizar todas as linhas que tiverem esse mes e copiar as colunas referentes a essas linhas para outra plan.

    As formulas que utilizei nao localizam so o mes sempre pegam outros valores por exemplo em linhas que tenham 11/03/2012 e 03/11/2012, quando busco so o mes 03 ela me retorna os dois valores.

    Agradeco qualquer dica!



    domingo, 22 de abril de 2012 17:07

Respostas

  • Boa tarde felipe valew pelo codigo, mas nao consegui implementr para busca com textbox.

    Resolvi meu problema com esse codigo aqui:

    Private Sub PopulaListBox(ByVal data As String, _
                              ByVal OrdemServico As String, _
                              ByVal Tag As String, _
                              ByVal MotivoDaTroca As String, _
                              ByVal MotorInstalado As String)

        On Error GoTo TrataErro

        Dim rst As ADODB.Recordset
        Dim campo As Field
        Dim myArray() As Variant
        Dim i As Integer

        Set rst = PreecheRecordSet(data, OrdemServico, Tag, MotivoDaTroca, MotorInstalado)
    lstLista.ColumnWidths = "0,9 cm;2,5 cm;2,6 cm ;2cm ;1,8 cm; 3 cm ; 3 cm; 10 cm;"
        'pega o número de registros para atribuí-lo ao listbox
        lstLista.ColumnCount = rst.Fields.Count

        'preenche o combobox com os nomes dos campos
        'persiste o índice
        Dim indiceTemp As Long
        indiceTemp = cboOrdenarPor.ListIndex
        cboOrdenarPor.Clear
        For Each campo In rst.Fields
            cboOrdenarPor.AddItem campo.Name
        Next
        'recupera o índice selecionado
        cboOrdenarPor.ListIndex = indiceTemp

        'coloca as linhas do RecordSet num Array, se houver linhas neste
        If Not rst.EOF And Not rst.BOF Then
            myArray = rst.GetRows
            'troca linhas por colunas no Array
            myArray = Array2DTranspose(myArray)
            'atribui o Array ao listbox
            lstLista.List = myArray
            'adiciona a linha de cabeçalho da coluna
            lstLista.AddItem , 0
            'preenche o cabeçalho
            For i = 0 To rst.Fields.Count - 1
                lstLista.List(0, i) = rst.Fields(i).Name
            Next i
            'seleciona o primeiro item da lista
            lstLista.ListIndex = 0
        Else
            lstLista.Clear
        End If

        'atualiza o label de mensagens
        If lstLista.ListCount <= 0 Then
            lblMensagens.Caption = lstLista.ListCount & " registros encontrados"
        Else
            lblMensagens.Caption = lstLista.ListCount - 1 & " registros encontrados"
        End If

        ' Fecha o conjunto de registros.
        Set rst = Nothing
        ' Fecha a conexão.
        'conn.Close

    TrataSaida:
        Exit Sub
    TrataErro:
        Debug.Print Err.Description & vbNewLine & Err.Number & vbNewLine & Err.Source
        Resume TrataSaida
    End Sub

    Criei uma caixa de combinacao no form do grafico que quando seleciono o mes referente ele seta no txtbox data do form pesquisa

    valor referente ao mes que seria "  /03/     " por exemplo e me retorna so os valores de marco na plan que esta meus dados para montagem do grafico.

    Obrigado pela ajuda e me mostrar esta funcao que muito interessante vou estudar ela e tentar entender todas variaveis.

    • Marcado como Resposta shakacfc quarta-feira, 25 de abril de 2012 21:16
    quarta-feira, 25 de abril de 2012 21:15

Todas as Respostas

  • Qual versão do Excel você usa?

    Use um AutoFiltro e filtre o mês de Março. Em seguida, selecione todos os resultados do filtro, pressione F5, clique em Especial e selecione Somente Células Visíveis. Clique em OK. Pressione Ctrl+C e depois, Ctrl+V no lugar onde deseja colar os valors.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 24 de abril de 2012 00:51
    Moderador
  • Estou usando o 2007.

    Entao Felipe, é que eu uso nessa plan so userforms a plan fica desativada.

    Eu gostaria de ajuda em um codigo que fizesse isto.

    Tentei ate usar o procv direto, sem ser pelo vba mas me retorna valores diferentes.

    Isto seria so para exibicao no grafico com os valores de cada mes.

    Os graficos tbm sao visualizados em userform.

    Obrgd pela ajuda.


    • Editado shakacfc terça-feira, 24 de abril de 2012 01:29
    terça-feira, 24 de abril de 2012 01:26
  • Sub Data()
        'A sintaxe do DateSerial é (ano, mês, dia)
        Dim dtBusca As Date
        Dim lng As Long
        dtBusca = DateSerial(2012, 5, 1)
        
        For lng = 2 To 20 'final da tabela
            If Cells(lng, "A") = dtBusca Then
                'Data encontrada
                Exit For 'Se quiser apenas a primeira correspondência
            Else
                'Data não encontrada
            End If
        Next lng
        
    End Sub

    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    terça-feira, 24 de abril de 2012 23:59
    Moderador
  • Boa tarde felipe valew pelo codigo, mas nao consegui implementr para busca com textbox.

    Resolvi meu problema com esse codigo aqui:

    Private Sub PopulaListBox(ByVal data As String, _
                              ByVal OrdemServico As String, _
                              ByVal Tag As String, _
                              ByVal MotivoDaTroca As String, _
                              ByVal MotorInstalado As String)

        On Error GoTo TrataErro

        Dim rst As ADODB.Recordset
        Dim campo As Field
        Dim myArray() As Variant
        Dim i As Integer

        Set rst = PreecheRecordSet(data, OrdemServico, Tag, MotivoDaTroca, MotorInstalado)
    lstLista.ColumnWidths = "0,9 cm;2,5 cm;2,6 cm ;2cm ;1,8 cm; 3 cm ; 3 cm; 10 cm;"
        'pega o número de registros para atribuí-lo ao listbox
        lstLista.ColumnCount = rst.Fields.Count

        'preenche o combobox com os nomes dos campos
        'persiste o índice
        Dim indiceTemp As Long
        indiceTemp = cboOrdenarPor.ListIndex
        cboOrdenarPor.Clear
        For Each campo In rst.Fields
            cboOrdenarPor.AddItem campo.Name
        Next
        'recupera o índice selecionado
        cboOrdenarPor.ListIndex = indiceTemp

        'coloca as linhas do RecordSet num Array, se houver linhas neste
        If Not rst.EOF And Not rst.BOF Then
            myArray = rst.GetRows
            'troca linhas por colunas no Array
            myArray = Array2DTranspose(myArray)
            'atribui o Array ao listbox
            lstLista.List = myArray
            'adiciona a linha de cabeçalho da coluna
            lstLista.AddItem , 0
            'preenche o cabeçalho
            For i = 0 To rst.Fields.Count - 1
                lstLista.List(0, i) = rst.Fields(i).Name
            Next i
            'seleciona o primeiro item da lista
            lstLista.ListIndex = 0
        Else
            lstLista.Clear
        End If

        'atualiza o label de mensagens
        If lstLista.ListCount <= 0 Then
            lblMensagens.Caption = lstLista.ListCount & " registros encontrados"
        Else
            lblMensagens.Caption = lstLista.ListCount - 1 & " registros encontrados"
        End If

        ' Fecha o conjunto de registros.
        Set rst = Nothing
        ' Fecha a conexão.
        'conn.Close

    TrataSaida:
        Exit Sub
    TrataErro:
        Debug.Print Err.Description & vbNewLine & Err.Number & vbNewLine & Err.Source
        Resume TrataSaida
    End Sub

    Criei uma caixa de combinacao no form do grafico que quando seleciono o mes referente ele seta no txtbox data do form pesquisa

    valor referente ao mes que seria "  /03/     " por exemplo e me retorna so os valores de marco na plan que esta meus dados para montagem do grafico.

    Obrigado pela ajuda e me mostrar esta funcao que muito interessante vou estudar ela e tentar entender todas variaveis.

    • Marcado como Resposta shakacfc quarta-feira, 25 de abril de 2012 21:16
    quarta-feira, 25 de abril de 2012 21:15