Selezione record



  • Selezione record
    di 2014pino (utente non iscritto) data: 18/07/2014 11:17:46

    Ho un file con circa 200 righe e 8 colonne; nella colonna n. 7 ho dei valori numerici, che possono variare da 100 a 8000. Vorrei potere selezionare solo i record che soddisfano il requisito di avere nella colonna n. 7 un valore superiore ad un certo numero, poniamo 5000. Ora riesco a farlo utilizzando il filòtro automatico, ma mi chiedevo se vi fosse un modo più carino esteticamente ed ugualmente efficace. Comunque, una volta ottenuta la selezione ho la necessità di ripotare in una riga a parte le somme delle colonne dei record selezionati: se ad es. imposto come valore di ricerca > 6000 ottengo 3 record, per i quali vorrei ottenere automaticamente la somma dei valori contenuti nelle 8 colonne.



  • di Lucas87 data: 18/07/2014 11:50:55

    Ciao
    Prova questo
     
    Dim sel As Range
    valore = 700
    k = Range("g" & Rows.Count).End(xlUp).Row - 2
    For i = 1 To k
        If Cells(i, 7) >= valore Then
            If sel Is Nothing Then
                Set sel = Cells(i, 7)
            Else
                Set sel = Union(sel, Cells(i, 7))
            End If
        End If
    Next
    For j = 1 To 8
        somma = 0
        For Each el In sel
            somma = somma + Cells(el.Row, j)
        Next
        Cells(k + 2, j) = somma
    Next
    sel.Select



  • di 2014pino (utente non iscritto) data: 18/07/2014 12:57:03

    Non è propriamente quello che cercavo. Allego un file di prova: vorrei creare una maschera tale che, impostato un valore per la ricerca (ad. es. 1000), riferito al contenuto della colonna H (Intestata "Valore"), ottengo l'elenco dei record che soddisfano tale valore; nel box Sintesi vorrei che venissero riportati le somme delle varie colonne dei record che sono stati selezionati.



  • di 2014pino (utente non iscritto) data: 18/07/2014 13:14:34

    Ho provato appena adesso la funzione SOMMA.PIU.SE, con la quale riesco ad ottenere la sintesi che voglio, ma con due limiti:
    il primo, è che non mi accetta (almeno io non ci riesco) il riferimento ad un valore inserito in una cella. Mi spiego: inserisco la funzione Somma.Più.Se(M1:M50; H1:H50; "> 1000"), e funziona, cioè mi somma tutti i valori contenuti nelle celle da M1 a M50 se il valore delle celle tra H1 ed H50 supera 1000. Se però inserisco il mio valore 1000 in una cella di ricerca, poniamo A1, e cambio la formula con Somma.Più.Se(M1:M50; H1:H50; ">A1") non funziona più.
    Inoltre, la funzione Somma.Più.Se fa solo le somme, ma non dà l'elenco dei record che sono stati sommati.



  • di scossa data: 18/07/2014 13:49:51

    Premesso che non riesco a capire le corrispondenze tra la tua descrizione ("Ho un file con circa 200 righe e 8 colonne) ed il file postato (ci sono 14 colonne ??!!) e già per questo verrebbe voglia di passare oltre, ti consiglio di studiarti la funzione SUBTOTALE(), che potresti usare per la somma =SUBTOTALE(109;H73:H98), per la =SUBTOTALE(101;H73:H98) etc. etc.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di 2014pino (utente non iscritto) data: 18/07/2014 14:30:52

    La funzione Subtotale dà la somma, che io riesco ad ottenere con somma.più.se, come ho scritto nel precedente post; ma non mi dà il listato dei record che soddisfano la condizione voluta!.



  • di scossa data: 18/07/2014 14:33:56

    la somma con 109, la media con 101, i conteggi con 102 e 103 ..... il tutto per i soli valori filtrati...

    Se poi alleghi un file "coerente" possiamo aggiustare il tiro o ricorrere ad altre soluzioni.


    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di 2014pino (utente non iscritto) data: 18/07/2014 15:09:38

    Da oggi sono in viaggio per tre giorni, e fino a lunedì non riuscirò ad inviare il file di esempio. Intanto ringrazio per l'attenzione.
     
     



  • di Raffaele_53 (utente non iscritto) data: 18/07/2014 16:21:33

    >>>chiedevo se vi fosse un modo più carino esteticamente ed ugualmente efficace
    Dovresti usare del codice VBA e sommare le varie celle direttamente.
    Fossero 50000 righe, il codice sarebbe piu lento.
    Comunque Filtro e SUBTOTALE(), visualizzi le righe e avrai anche i totali

    La formula a me funziona
    =SOMMA.PIÙ.SE(M1:M50; H1:H50; ">"&INDIRETTO("A"& 1))



  • di 2014pino (utente non iscritto) data: 21/07/2014 16:56:42

    Allego il file di prova. In pratica: nel box Ricerca vorrei che inserendo un valore numerico nella cella indicata ("Inserisci valore"), venissero filtrati tutti i record che soddisfano quel valore; nel box Sintesi devono avvenire le somme dei dati di alcune colonne, come indicato nelle legenda.



  • di Textomb data: 21/07/2014 22:45:58

    ti propongo una soluzione con una piccola variazione al tema.
    Visto che le caselle di ricerca sono tutte > di xxxx non occorre inserire il segno di > nella lista.
    Ti allego il tuo file rev01



  • di 2014pino (utente non iscritto) data: 22/07/2014 09:29:04

    Ho copiato la formula indicata nel file completo; funziona, ma nella ricerca è imprecisa, nel senso che filtra anche recoprd che non corrispondono al parametro indicato. Ad esempio, se cerco i record con valore > 3000 mi filtra anche alcuni record con valore inferiore a 3000. Eppure ho copiato la formula esattamente, modificando solo i valori delle righe (che nel file completo vanno da A9 a A170) e la colonna ove eseguire la ricerca (che nel file completo è la colonna O e non la colonna M).



  • di pino2014 (utente non iscritto) data: 22/07/2014 12:03:36

    Ho risolto, ero io ad avere commesso un piccolo errore nel ricopiare la formula, che invece funziona perfettamente!!! Grazie.