È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Macro VBA al posto di funzioni

Ultimo Aggiornamento: 05/02/2019 17:56
Post: 29
Registrato il: 06/02/2017
Utente Junior
2016
OFFLINE
02/02/2019 21:08

Salve, chiedo ancora un aiuto, volevo sapere se è possibile utilizzare una macro VBA al posto della funzione per contare numeri pari e dispari e alcune formule di combinazioni di numeri e darne il risultato di fianco alla colonna della combinazione stessa. Per poche righe ho utilizzato le funzioni
=MATR.SOMMA.PRODOTTO((RESTO(A2:E2;2)=0)+0) numeri pari
=MATR.SOMMA.PRODOTTO((RESTO(A2:E2;2)<>0)+0) numeri dispari
formule
=MATR.SOMMA.PRODOTTO((A2:E2>=1)*(A2:E2<17)) numeri inferiori a 17
=MATR.SOMMA.PRODOTTO((A2:E2>=17)*(A2:E2<34)) numeri inferiori a 34
=MATR.SOMMA.PRODOTTO((A2:E2>=34)*(A2:E2<51)) numeri inferiori a 51


esempio: 28 5 12 6 49 3,2 (pari,dispari) 2.1.2 (formula)


ma essendo le righe circa 1 milione che cambiano da settimana a settimana farlo con la funzione si perde molto tempo.
Ringrazio anticipatamente
Post: 3.236
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
03/02/2019 07:07

Buona giornata, Antonio;
potresti provare con il "Registratore di Macro" oppure potresti utilizzare la Funzione VBA FormulaLocal.

Per maggiori dettagli, allega un File (senza Dati sensibili) con alcuni Record significativi già inseriti e chiarisci ciò che desideri ottenere.



Buon fine settimana.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 29
Registrato il: 06/02/2017
Utente Junior
2016
OFFLINE
03/02/2019 17:30

Macro VBA
Salve Giuseppe e grazie dell'interessamento ti allego il file di prova, che sono solo 100 righe ma che potrebbero arrivare al 1.000.000. Ho provato con una macro ma mi da errore 13
[Modificato da Antonio Romano.2017 03/02/2019 21:18]
Post: 3.237
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
03/02/2019 21:37

Buona sera, Antonio;
domani vedo di fornirti una possibile soluzione.

Quello che non ho capito è il risultato in Colonna "J"; da cosa ricavi quel risultato?



Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 3.239
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
04/02/2019 08:02

Buona giornata, Antonio;
dai tuoi Codici VBA fedo che la tua intenzione è quella di gestire i calcoli su 1.000.000 di righe, considera che per calcolare i 11.000 Record che ho sintetizzato il tempo di esecuzione è di circa 15 secondi.
Presumo che il tempo di esecuzione rapportato a 1.000.000 di Record sia incredibilmente impegnativo.

Considera che per la gestione di un numero di Record superiore ai 1.500 ÷ 2.000 Record, senza indugio propendo per ACCESS ma questa è una mia scelta molto personale e, come tale, opinabile.

In ogni caso il Codice VBA che ho utilizzato è il seguente:

Sub Elabora_L()
Application.ScreenUpdating = False
Dim Rcd As Long, x As Long
Dim y As Byte

Application.Calculation = xlCalculationManual
    Rcd = Range("A" & Rows.Count).End(xlUp).Row
        Range(Cells(3, 7), Cells(Rcd, 13)).ClearContents
        For x = 3 To Rcd
            For y = 1 To 5
                Cells(x, 7).Value = Cells(x, 7).Value + Cells(x, y).Value
                If Cells(x, y).Value / 2 - Int(Cells(x, y).Value / 2) = 0 Then
                    Cells(x, 8).Value = Cells(x, 8).Value + 1
                Else
                    Cells(x, 9).Value = Cells(x, 9).Value + 1
                End If
					If Cells(x, y).Value >= 1 And Cells(x, y).Value < 17 Then Cells(x, 11).Value = Cells(x, 11).Value + 1
					If Cells(x, y).Value >= 17 And Cells(x, y).Value < 34 Then Cells(x, 12).Value = Cells(x, 12).Value + 1
					If Cells(x, y).Value >= 34 And Cells(x, y).Value < 51 Then Cells(x, 13).Value = Cells(x, 13).Value + 1
            Next y
        Next x
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
    Cells(3, 1).Select
End Sub




Buon lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 30
Registrato il: 06/02/2017
Utente Junior
2016
OFFLINE
05/02/2019 17:56

Macro VBA
Giuseppe, ti ringrazio della macro, funziona perfettamente e con delle appropriate modifiche l'ho adattata al file originale. Grazie al Forum per dare l'opportunità a chi non è un esperto di poter comunque far fronte alle avvenute esigenze.
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Macro per Compilazione tabella (2 messaggi, agg.: 18/06/2014 20:53)
Macro VBA (21 messaggi, agg.: 17/10/2018 12:33)
pulsante macro vba (2 messaggi, agg.: 22/06/2019 07:47)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 04:29. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com