Ricerca dati su foglio diverso



  • Ricerca dati su foglio diverso
    di Riccardo (utente non iscritto) data: 19/07/2009

    Ricerca dati su un foglio diverso dal corrente.
    1) devo eseguire un ciclo for-next per tutte le righe esistenti in un foglio excel: come posso limitare il contatore al valore di righe massimo, non sapendo quante righe sono?
    2) devo fare una funzione che estrae dei dati da un foglio diverso da quello corrente; come posso svolgere la ricerca? esempio: mi trovo sul foglio1 debbo scrivere in una riga la funzione ricercanome (all'interno di una stringa nelle righe del foglio2) ed estrapolare, se trova la stringa, il valore di un altra colonna della stessa riga del foglio2 e scriverlo nel foglio1.
    grazie se mi potrete dare una mano.
    riccardo



  • di Luca data: 20/07/2009

    Per quanto riguarda il primo quesito, mi hanno appena dato (su un altro forum) una dritta simpatica che ti incollo qui sotto.
    in pratica il ciclo for next è basato su un parametro (qui "ur", ma gli puoi dare il nome che preferisci). precedentemente, tale parametro deve aver preso il valore della riga in cui è situato l'ultimo dato in una determinata colonna (nel mio caso la colonna b, individuata col n. 2). per far questo il comando si mette in colonna b all'ultima riga del foglio (65536), poi risale sù con il comando "end(xlup)" che corrisponde alla combinazione di tasti "ctrl+frecciasù". con quel "row" finale, il parametro si prende il numero della riga.
    troppo forte, eh?
    per l'altro quesito, non ho capito proprio tutto, devo riflettere. magari prova a rispiegare con più dettagli.
    ciao!
     
    Ur = Cells(65536, 2).End(xlUp).Row
    For Each CL In Range(Cells(1, 2), Cells(Ur, 2))
    



  • di Luca data: 20/07/2009

    Non so se si faccia o meno, in questo forum, di citare le fonti. sperando di non fare torto a nessuno, mi sembra onesto dire che per quella dritta di cui sopra ringrazion gab_63 dal forum sul vba di manuali.net.



  • di Riccardo (utente non iscritto) data: 20/07/2009

    Grazie luca del tuo intervento:
    ho risolto diversamente come vado a spiegare qui sotto con la funzione numerorecord.
    function numrec(zona) 'restituisce numero di righe in area colonna. es.: numrec("a:a")
    numrec = application.countif(zona, "<>")
    end function
    la mia funzione non conteggia tutte le righe ma solo quelle effettivamente compilate.
    entrambe le soluzioni sono valide, ma con un limite: se sono presenti delle righe scritte più in basso, ma fuori dalla colonna assegnata per la ricerca (nel tuo caso la "b"), la funzione non le conteggia; quindi l'utente deve assegnare un campo dove ci sia certezza che l'ultima riga scritta sia effettivamente quella più bassa. sarebbe bello trovare una funzione generale che superasse con certezza questo limite.
    la seconda parte della ricerca l'ho risolta col seguente semplice codice (assunto che mi trovo nel foglio sheet1):
    for riga = 2 to numrec
    rifa = "a" & riga
    rifb = "b" & riga
    stringa$ = stringa$ + worksheets("sheet2").range(rifb).value & " " & worksheets("sheet2"). range(rifa).value
    end if
    next riga

    infine trovo assolutamente corretto ed etico segnalare le fonti delle proprie informazioni, anche io lo faccio sempre (quando non è "farina del mio sacco").
    grazie ancora.
    riccardo



  • di Riccardo (utente non iscritto) data: 20/07/2009

    Grazie luca del tuo intervento:
    ho risolto diversamente come vado a spiegare qui sotto con la funzione numerorecord.
    function numrec(zona) 'restituisce numero di righe in area colonna. es.: numrec("a:a")
    numrec = application.countif(zona, "<>")
    end function
    la mia funzione non conteggia tutte le righe ma solo quelle effettivamente compilate.
    entrambe le soluzioni sono valide, ma con un limite: se sono presenti delle righe scritte più in basso, ma fuori dalla colonna assegnata per la ricerca (nel tuo caso la "b"), la funzione non le conteggia; quindi l'utente deve assegnare un campo dove ci sia certezza che l'ultima riga scritta sia effettivamente quella più bassa. sarebbe bello trovare una funzione generale che superasse con certezza questo limite.
    la seconda parte della ricerca l'ho risolta col seguente semplice codice (assunto che mi trovo nel foglio sheet1):
    for riga = 2 to numrec
    rifa = "a" & riga
    rifb = "b" & riga
    stringa$ = stringa$ + worksheets("sheet2").range(rifb).value & " " & worksheets("sheet2"). range(rifa).value
    end if
    next riga

    infine trovo assolutamente corretto ed etico segnalare le fonti delle proprie informazioni, anche io lo faccio sempre (quando non è "farina del mio sacco").
    grazie ancora.
    riccardo