Come ricercare lintestazione delle colonne




  • di alfrimpa data: 13/11/2017 13:50:09

    Ciao Mau

    Allega un file di esempio con i dati, spiegazione e mostrando il risultato che vuoi ottenere.

    Alfredo





  • di Mau (utente non iscritto) data: 13/11/2017 14:29:04

    ho allegato un pezzo del foglio di lavoro su cui devo far funzionare la mia macro.
    Utilizzando il "trova" e cercando la parola "karité"; il risultato è:
    cella M2 Valore "Oleine di karité"
    cella N5 Valore "Burro di karité"
    cella N6 Valore "Burro di karité Bio"
    cella N7 Valore "Burro di karité Extra"

    Ciò che vorrei io, è inserire in un campo di ricerca il valore "karitè" e ottenere come risultato:
    Oleine di karité - MATERIE PRIME - Oli vegetali
    Burro di karité - MATERIE PRIME - Burri
    Burro di karité Bio - MATERIE PRIME - Burri
    Burro di karité Extra - MATERIE PRIME - Burri

    Il tutto nella maniera più fruibile possibile, una msgbox sarebbe perfetta



  • di alfrimpa data: 13/11/2017 16:05:21

    Ciao Mau

    Ti ho riallegato il file (mau_2 gli altri sono sbagliati) con le macro che vedi sotto ed ho utilizzato un foglio di appoggio ed una userform per visualizzare i dati.

    Tieni però presente che il funzionamento della macro è strettamente connesso alla assoluta identità della stringa inserita per la ricerca ed i dati presenti sul foglio.

    La macro da eseguire è "prova".

    Prova un po' e fai sapere.

    Alfredo 
     
    Sub prova()
    Dim ur As Long
    Dim lr As Long
    Dim PROD As String
    lr = Sheets("INGREDIENTI").Cells(Rows.Count, 1).End(xlUp).Row
    Dim rng As Range
    Dim cel As Range
    Set rng = Sheets("INGREDIENTI").Range("A2:An" & lr)
    PROD = InputBox("Inserire il prodotto")
    Application.ScreenUpdating = False
    Sheets("Foglio1").Cells.ClearContents
    For Each cel In rng
    ur = Sheets(2).Cells(Rows.Count, 1).End(xlUp).Row
    If InStr(1, cel.Value, PROD) Then
        Sheets("Foglio1").Cells(ur + 1, 1).Value = cel.Value & "- " & Mid(Cells(1, cel.Column), 1, Application.WorksheetFunction.Find("-", Cells(1, cel.Column))) & Mid(Cells(1, cel.Column), Application.WorksheetFunction.Find("-", Cells(1, cel.Column)), 50)
        End If
    Next cel
    UserForm1.Show
    Application.ScreenUpdating = True
    End Sub
    
    Private Sub UserForm_Initialize()
    Dim I As Integer
    Dim ur As Long
    Application.ScreenUpdating = False
    ur = Sheets("Foglio1").Cells(Rows.Count, 1).End(xlUp).Row
    For I = 2 To ur
        Me.ListBox1.AddItem Sheets("Foglio1").Range("a" & I).Value
    Next I
    Application.ScreenUpdating = True
    End Sub
    






  • di Mau (utente non iscritto) data: 14/11/2017 09:50:11

    Fantastico! E' quello che stavo cercando di fare, però necessita ancora di un paio di modifiche se possibile.
    L'inserimento non deve essere necessariamente identico, anche perché in alcune materie prime ci sono caratteri speciali che non posso ricordare a memoria. Ho notato che anche se cambia il maiuscolo e il minuscolo non trova la stringa cercata...dici che si può fare?



  • di Mau (utente non iscritto) data: 14/11/2017 10:03:56

    la porzione di testo l'ho risolta eliminando il Trim dalla funzione InStr, mentre il formato maiuscolo e minuscolo l'ho risolto con LCase. In pratica l'ho fatta diventare così:

    If InStr(1, LCase(cel.Value), LCase(PROD)) Then

    funziona perfettamente!
    sei stato davvero un grande, grazie infinite



  • di alfrimpa data: 14/11/2017 10:39:31

    Avresti potuto usare anche l'istruziono

    Option Compare Text

    In testa al modulo ed evitavi l'LCase.

    Alfredo