Risultati da 1 a 10 di 10

Discussione: Macro per "CONTA.VALORI()"



  1. #1
    L'avatar di Allocco
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Napoli
    Messaggi
    292
    Versione Office
    2010
    Likes ricevuti
    48
    Likes dati
    6

    Macro per "CONTA.VALORI()"

    Ciao a tutti ho aperto un nuovo post, in continuazione del precedente, brillantemente risolto da Raffaele che saluto, ma l'argomento è un altro.

    questo il link della discussione precedente dal quale si può scaricare il file, perche e lo stesso, ma posso anche reinserirlo.

    http://www.forumexcel.it/forum/7-dom...-ma-in-memoria

    il problema è contare l'ultima volta che si è presentata una combinazione di 1-2-3-4-5 di un range di dati, questa un immagine:

    host image

    come si vede i numeri laterali progressivi in rosso è l'ultima volta che si è presentata la combinazione ad esempio la 6 e la 16, l'ultima e la 16, non importano i numeri ma solo il conteggio della combinazione

    sono riuscito ad impostare questa macro con un ciclo "For...Next" si potrebbe fare di meglio, devo riportare i valori trovati in un altra posizione, questo il codice che sono riuscito a sviluppare.

    Codice: 
    For x = 3 To Ur
      k = WorksheetFunction.CountA(Range("AB" & x & ":AU" & x))
      Select Case k
        Case 1: k1 = x
        Case 2: k2 = x
        Case 3: k3 = x
        Case 4: k4 = x
        Case 5: k5 = x
        Case 6: k6 = x
        Case 7: k7 = x
      End Select
    Next x
    Range("C27:C33").ClearContents
    If k1 = 0 Then Cells(27, 3) = "" Else Cells(27, 3) = k1 - 2
    If k2 = 0 Then Cells(28, 3) = "" Else Cells(28, 3) = k2 - 2
    If k3 = 0 Then Cells(29, 3) = "" Else Cells(29, 3) = k3 - 2
    If k4 = 0 Then Cells(30, 3) = "" Else Cells(30, 3) = k4 - 2
    If k5 = 0 Then Cells(31, 3) = "" Else Cells(31, 3) = k5 - 2
    If k6 = 0 Then Cells(32, 3) = "" Else Cells(32, 3) = k6 - 2
    If k7 = 0 Then Cells(33, 3) = "" Else Cells(33, 3) = k7 - 2
    possibile migliorarlo?.

    Ciao Allocco (8-D

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3218
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155

    Re: Macro per "CONTA.VALORI()"

    Ciao
    sinceramente non ho capito cosa vuoi fare.
    il problema è contare l'ultima volta che si è presentata una combinazione di 1-2-3-4-5 di un range di dati
    Intanto io direi "individuare" l'ultima volta che si è presentata una combinazione ma forse tu vuoi "contare" quante volte si presenta una determinata combinazione.
    Chiarito questo, ho provato il tuo "codice" (posso chiamarlo così ora che scossa ha dato l'imprimatur in altra discussione ) ma non ho capito cosa fa! Cosa conta?
    Ciao,
    Mario

  3. #3
    L'avatar di Allocco
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Napoli
    Messaggi
    292
    Versione Office
    2010
    Likes ricevuti
    48
    Likes dati
    6

    Re: Macro per "CONTA.VALORI()"

    Ciao Marius, mi interessa sapere solo l'ultima volta che si è presentata la combinazione, non quante volte si presenta.

    il mio ciclo For.next va dalla riga3 all'ultima riga, la function CountA() conta i valori della riga in "k" ora quando, ammettendo che siano 3 valori, quindi "k" ha come valore 3 con il "Select Case" nel "Case 3" memorizza la riga "x" in questo modo trovando un 3 successivo memorizzerà la nuova riga alla posizione della x, alla fine del ciclo nel "Select Case" da 1 a 7 si troverà il valore dell'ultima riga dove si è trovata la combinazione.

    quindi ribaltando il select case sul foglio si avranno le ultime posizioni occupate da ciascuna combinazione.

    volevo sapere se fosse possibile migliorarlo con altre funzione o metodi per velocizzare il processo.

    Ciao Allocco (8-D

  4. #4
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3218
    Versione Office
    Excel2010
    Likes ricevuti
    625
    Likes dati
    155

    Re: Macro per "CONTA.VALORI()"

    Ciao
    A mio avviso potresti ridurla così
    Codice: 
    Option Explicit
    Sub Allocco()
    Ur = Cells(Rows.Count, "AB").End(xlUp).Row
    Range("C27:C33").ClearContents
    For X = 3 To Ur
        k = WorksheetFunction.CountA(Range("AB" & X & ":AU" & X))
        If k = 1 Then Cells(27, 3) = X
        If k = 2 Then Cells(28, 3) = X
        If k = 3 Then Cells(29, 3) = X
        If k = 4 Then Cells(30, 3) = X
        If k = 5 Then Cells(31, 3) = X
        If k = 6 Then Cells(32, 3) = X
        If k = 7 Then Cells(33, 3) = X
        k = 0
    Next X
    End Sub
    Ovviamente fai le prove del caso-
    Ciao,
    Mario

  5. #5
    L'avatar di Allocco
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Napoli
    Messaggi
    292
    Versione Office
    2010
    Likes ricevuti
    48
    Likes dati
    6

    Re: Macro per "CONTA.VALORI()"

    Ciao Mario, sono riuscito a modificare la macro in questa, che credo sia la più compatta.

    Codice: 
    Sub all()
    Dim r, x, y, dati(1 To 20)
    
    
    r = sh1.Cells(Rows.Count, 5).End(xlUp).Row
    For x = 3 To r
      y = WorksheetFunction.CountA(Range("AB" & x & ":AU" & x))
      If y <> 0 Then dati(y) = x - 2
    Next x
    Range("C25:D34").ClearContents
    For x = 1 To 20
      If x > 10 Then Cells(x + 14, 4) = dati(x) Else Cells(x + 24, 3) = dati(x)
    Next x
    sh1.Cells(1, 4).Select
    End Sub
    alcuni giochi tipo 10eLotto prevedono 20 numeri estratti ecco il motivo della matrice "Dati(1 to 20)", ed anche la seconda parte della macro della scrittura dei dati sul foglio perche scrive su 2 colonne.

    Ciao Allocco (8-D

  6. #6
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Macro per "CONTA.VALORI()"

    Dovresti allegare un file, mà sopratutto spiegarTi bene
    >>>l'ultima volta che si è presentata la combinazione ad esempio la 6 e la 16,
    Sicuro non vedo combinazioni

    Vedo sh1. senza dichiarlo e vedo un For x = 1 To 20 che sperò proprio che NON ti riferisci alla variabile DATI()

  7. #7
    L'avatar di Allocco
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Napoli
    Messaggi
    292
    Versione Office
    2010
    Likes ricevuti
    48
    Likes dati
    6

    Re: Macro per "CONTA.VALORI()"

    Ciao Raffaele, a me interessa solo la 16, quelle precedenti non interessano, solo l'ultima volta che si è presentata la combinazione di 1-2-3-4-5-etc... valori.

    il file è quello della discussione

    Eseguire un CONTA.SE() su una matrice ma in memoria

    la macro è un estratto di una macro più lunga, ecco perche manca qualche dichiarazione, il secondo ciclo serve appunto a far scrivere la matrice Dati(1 to 20) sul foglio.

    evito di far scrivere i dati sul foglio in quanto si allunga il tempo di esecuzione, oltre che una cella verrebbe riscritta molte volta ad ogni cambio della combinazione.

    Ciao Allocco (8-D

  8. #8
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Macro per "CONTA.VALORI()"

    Continuo a non capire.
    Ok per il files

    >>>solo l'ultima volta che si è presentata la combinazione di 1-2-3-4-5
    Letteralmente cerchi 1,2,3,4,5 oppure qualsiasi combinazione fatta da 5 numeri? In riga 16 vedo solo 4 numeri

    Domanda, nell'altro post hai inserito l'ultima riga che ho scritto?
    Questa richiesta non ha nulla a che fare con quel "problema"?

  9. #9
    L'avatar di Allocco
    Clicca e Apri
    Data Registrazione
    Jan 2016
    Località
    Napoli
    Messaggi
    292
    Versione Office
    2010
    Likes ricevuti
    48
    Likes dati
    6

    Re: Macro per "CONTA.VALORI()"

    Ciao Raffaele, no parlo di combinazioni di 2 numeri, 3 numeri, cioè l'ultima volta che si è presentata una combinazione di x numeri max 20 perche quelli sono i numeri di estrazione del 10eLotto.

    dicevo solo che quest'argomento è diverso dall'altro, perciò ho aperto un nuovo post altrimenti continuavo sull'altro.

    Ciao Allocco (8-D

  10. #10
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Macro per "CONTA.VALORI()"

    Non capisco, come scritto "quell'ultima riga" faceva già tutto nel modo più veloce.
    Comunque per quello che ho capito

    Codice: 
    Sub all()
    Dim r, x, y
    r = Cells(Rows.Count, 5).End(xlUp).Row
    Range("C3:D" & r).ClearContents
    For x = 3 To r
        y = WorksheetFunction.CountA(Range("AB" & x & ":AU" & x))
        If y > 10 Then Cells(x, 4) = y Else Cells(x, 3) = y
    Next x
    End Sub

Discussioni Simili

  1. [Risolto] Ordinare con la funzione "piccolo"..ma "portandosi dietro" anche altri dati affiancati
    Di mauri73 nel forum Domande su Excel in generale
    Risposte: 13
    Ultimo Messaggio: 05/02/17, 14:57
  2. [Risolto] Come leggere la seguente formula =SE.ERRORE(INDIRETTO("'"&A1&"'!K1";1);""))
    Di sitolofi nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 20/12/16, 14:54
  3. funzione [conta.se]: contare il valore di un testo in una cella con "concatena"
    Di delittogoloso nel forum Domande su Excel in generale
    Risposte: 21
    Ultimo Messaggio: 05/07/16, 23:55
  4. Accorciare formula "SE" "O" con tanti valori
    Di Theinvoker nel forum Domande su Excel in generale
    Risposte: 12
    Ultimo Messaggio: 08/04/16, 15:16
  5. [Risolto] Codice non funzionante dopo il passaggio da "Windows" a "Mac"...
    Di joondeep nel forum Foglio di calcolo su altre Piattaforme
    Risposte: 13
    Ultimo Messaggio: 12/03/16, 21:09

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •