cerca numeri InputBox



  • cerca numeri InputBox
    di Johnny (utente non iscritto) data: 02/07/2017 12:07:17

    eccomi di nuovo con un nuovo problema sempre con il cerca da ImputBox
    nella colonna A da A6 fino a A5000 ho dei numeri,tramite imput box vorre cercare e filtrare i dati Allego il codice
    solo che lanciando il codice non mi trova nulla anche se il numero c'è come mai?


     
    Sub Filtra_Codice_Num() 'Munero
    
    Dim Cerco As String   'Cerco è la variabile con la quale prendiamo il testo o il valore che scriveremo nella inputBox
    Dim Crit1 As String        'Crit1 è la variabile che serve per "legare" la variabile Cerco con uno o più operatori di confronto
    
      'With Sheets("Foglio1")
      With Sheets("Foglio1")
        Cerco = InputBox("SCRIVI UNA PARTE O PER INTERO IL CODICE DA CERCARE")       'lanciamo la InputBox per richiedere di scrivere ciò 'che cerchiamo
        If Cerco <> "" Then
          .Unprotect  'Rimuove protezione del foglio specificato
          .Range("A6:E6").AutoFilter
          Crit1 = "=*" & Cerco & "*"       'impostiamo una ricerca corrispondente a: tutto ciò che contiene il termine uguale alla variabile 'ottenuta con "Cerco"
          .Range("A6:E6").AutoFilter Field:=1, Criteria1:=Crit1, Operator:=xlAnd  'applichiamo il filtro sulla cella di inizio tabella (Field = 1), 'contenente il 'nome contenuto nell'intestazione del campo della Colonna 1 (la A)
          .Range("A6").Select
          .Protect , DrawingObjects:=False, Contents:=True, Scenarios:= _
                False, AllowFormattingCells:=True, AllowFormattingColumns:=True, _
                AllowFormattingRows:=True, AllowInsertingColumns:=True, AllowInsertingRows _
                :=True, AllowInsertingHyperlinks:=True, AllowDeletingColumns:=True, _
                AllowDeletingRows:=True, AllowSorting:=True, AllowFiltering:=True, _
                AllowUsingPivotTables:=True, userinterfaceonly:=True
        End If
      End With
    End Sub



  • di alfrimpa data: 02/07/2017 12:49:06

    Johnny la inputbox restituisce un valore di tipo String.

    Se la ricerca deve essere effettuata tra numeri la variabile cerco deve essere convertita in numero con una delle funzioni di conversione CInt, CLng o CDbl

    Alfredo





  • di Johnny (utente non iscritto) data: 02/07/2017 15:55:12

    Ciao alfrimpa grazie per la risposta mi potresti spiegare come devo fare



  • di patel data: 02/07/2017 16:34:03

    allega un file di esempio in modo da testare il codice





  • di Johnny (utente non iscritto) data: 02/07/2017 16:38:23

    allego il file



  • di patel data: 02/07/2017 17:18:31

    semplicemente non puoi utilizzare per la ricerca una espressione del tipo
    Crit1 = "=*" & Cerco & "*"
    che vale soltanto per le stringhe. La tua macro funzionerà soltanto se nella colonna A ci saranno stringhe numeriche, ma non numeri.
    Puoi avere la riprova filtrando la colonna manualmente, se imposti 3 non troverai 333

    per realizzare quello che vuoi devi costruirti il filtro da codice, quindi scansionare tutta la colonna, leggere il numero e trasformarlo in stringa, confrontarlo con l'inputbox e se non corrisponde nascondere la riga.
    Impresa non facile.





  • di Johnny (utente non iscritto) data: 02/07/2017 19:44:12

    ciao patel grazie per aver risposto, non ho idea di come fare, sè non è molto complesso mi daresti una mano?
    oppure se c'è qualche altro sistema da adottare.



  • di patel data: 03/07/2017 07:19:01

    a cosa ti serve ? perché non puoi usare stringhe numeriche invece dei numeri ?





  • di Johnny (utente non iscritto) data: 03/07/2017 09:30:53

    mi serve per filtrare dei valori nell'intervallo di celle specificato che sono numeri tipo
    557948
    558964
    557849
    556849
    545849 ecc
    se io vado a scrivere esempio 849
    mi deve filtrare tutti valori
    557849
    556849
    545849
    naturalmente nel foglio ci sono fino a 6000 celle con numeri.
    Forse potrebbe andare bene con stringhe numeriche, ora che ho spiegato cosa devo, forse riusciamo a trovare una soluzione.



  • di patel data: 03/07/2017 11:28:23

    riusciamo a trovare una soluzione se usi stringhe numeriche, anzi la tua macro già funziona se al posto dei numeri usi stringhe. Traforma i numeri in stringhe con la funzione TESTO(A7;0), copia e incolla valori, prova la tua macro.
    oppure puoi usare Dati, testo in colonne
    Convert a Number to Text Using Excel Text to Columns
    If you want to convert an entire column of Excel numbers to text, you might prefer to use the Excel Text to Columns command.
    However, this method might be less useful if your data spans several columns, as the Text to Columns command only works on one column at a time.
    Select the range of cell(s) that you want to convert (these must not span more than one column).
    Excel Text To Columns Option Button
    From the Data tab on the Excel ribbon, select the Text to Columns option (see right).
    This will cause the Convert Text to Columns wizard to open up. Within this:
    Make sure the Delimited option is selected and click Next >;
    Make sure that none of the Delimiters are selected and then click Next > again;
    You should now be offered a selection of Column Data Formats. Select Text and click the Finish button.





  • di Johnny (utente non iscritto) data: 03/07/2017 13:25:10

    ciao patel grazie per la risposta, solo che adesso mi sono proprio perso, non riesco a capire cosa devo fare mi potresti aiutare, usando il file allegato.
    Scusa ma non riesco a capire, praticamente io nelle celle continuo a inserire i numeri che saranno convertiti in stringa quando lancio la ricerca?
    Se puoi fammi un esempio usando il foglio allegato. Grazie ancora



  • di patel data: 03/07/2017 18:14:42

    aggiungi questa sub e chiamala subito prima di
    Cerco = InputBox .....
     
    Sub numtotext()
        LR = Cells(Rows.Count, "A").End(xlUp).Row
        Range("A6:A" & LR).Select
        Selection.TextToColumns Destination:=Range("A6"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 2), TrailingMinusNumbers:=True
    End Sub






  • di Johnny (utente non iscritto) data: 03/07/2017 19:23:05

    ciao patel ho provato la sub l' riciamata con la funzione call prima Cerco = InputBox, funziona adesso filta il tutto, solo che nella cella dove ci sono inumeri ni esce il triangolino verde che mi segnala che i numeri sono formattati come testo, mi chiedevo se quando rimuovo il filtro era possibile richiamare un altra sub che riformatta il testo come numeri?



  • di patel data: 03/07/2017 19:32:11

    prova con questa
     
    Sub textToNum()
        LR = Cells(Rows.Count, "A").End(xlUp).Row
        For r = 7 To LR
          Cells(r, "A") = Val(Cells(r, "A"))
        Next
    End Sub






  • di Johnny (utente non iscritto) data: 04/07/2017 19:01:17

    Grazie patel per l'aito e la pazienza, ho provato la sub e funziona tutto a dovere, grazie ancora