Condividi:        

Cerca Combinazione numeri (Ambi-Terni)

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: Cerca Combinazione numeri (Ambi-Terni)

Postdi Flash30005 » 02/02/15 15:37

Beh non sarebbe più un timer ma una "sfera di cristallo" :D

I fattori sono molteplici: velocità Pc, impegno CPU, versione di office etc etc.

Comunque ho pensato di realizzare qualcosa che, orientativamente, fornisce un calcolo ma non so fino a che punto potrà essere vicino a quello reale.

Inserisci un nuovo modulo nel Vba e in esso incollerai l'intero codice
Codice: Seleziona tutto
Public T1, T2, T3 As Double
Sub CalcAmbi23()
Inizio1 = Timer
Application.ScreenUpdating = False
Application.Calculation = xlManual

Ws1 = "Foglio1"
Worksheets(Ws1).Range("M3:M12").ClearContents
URA = Worksheets(Ws1).Range("A" & Rows.Count).End(xlUp).Row / 10
For RRC1 = 3 To 3
    For RRA = 3 To URA
MyC1 = 0
MyC2 = 0
MyCA = 0
        MyC1 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!J" & RRC1 & "))")
        MyC2 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!K" & RRC1 & "))")
        MyCA = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!L" & RRC1 & "))")
        If MyC1 + MyCA = 2 Then Worksheets(Ws1).Range("M" & RRC1).Value = Worksheets(Ws1).Range("M" & RRC1).Value + 1
        If MyC2 + MyCA = 2 Then Worksheets(Ws1).Range("M" & RRC1).Value = Worksheets(Ws1).Range("M" & RRC1).Value + 1
        Next RRA
    Next RRC1
    T1 = (Timer - Inizio1) * 10 * 10
CalcAmbi24
CalcAmbi35

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Msss = "Il Tempo previsto è di " & Int((T1 + T2 + T3) * 0.95) & " Sec circa. Vuoi effettuare la ricerca?"
Risp = MsgBox(Msss, vbYesNo)
If Risp = 6 Then
TrovaAmbi23
End If
End Sub

Private Sub CalcAmbi24()
Inizio2 = Timer
Worksheets(Ws1).Range("N15:N20").ClearContents
URA = Worksheets(Ws1).Range("A" & Rows.Count).End(xlUp).Row / 10
For RRC1 = 15 To 15
    For RRA = 3 To URA
MyC1 = 0
MyC2 = 0
MyCA = 0
MyCA2 = 0
        MyC1 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!J" & RRC1 & "))")
        MyC2 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!K" & RRC1 & "))")
        MyCA = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!L" & RRC1 & "))")
        MyCA2 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!M" & RRC1 & "))")
        If MyC1 + MyCA = 2 Then Worksheets(Ws1).Range("N" & RRC1).Value = Worksheets(Ws1).Range("N" & RRC1).Value + 1
        If MyC1 + MyCA2 = 2 Then Worksheets(Ws1).Range("N" & RRC1).Value = Worksheets(Ws1).Range("N" & RRC1).Value + 1
        If MyC2 + MyCA = 2 Then Worksheets(Ws1).Range("N" & RRC1).Value = Worksheets(Ws1).Range("N" & RRC1).Value + 1
        If MyC2 + MyCA2 = 2 Then Worksheets(Ws1).Range("N" & RRC1).Value = Worksheets(Ws1).Range("N" & RRC1).Value + 1
        Next RRA
    Next RRC1
        T2 = (Timer - Inizio2) * 10 * 6
End Sub

Private Sub CalcAmbi35()
Inizio3 = Timer
Worksheets(Ws1).Range("O23:O26").ClearContents
URA = Worksheets(Ws1).Range("A" & Rows.Count).End(xlUp).Row / 10
For RRC1 = 23 To 23
    For RRA = 3 To URA
MyC1 = 0
MyC2 = 0
MyCA = 0
MyCA2 = 0
MyCA3 = 0
        MyC1 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!J" & RRC1 & "))")
        MyC2 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!K" & RRC1 & "))")
        MyCA = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!L" & RRC1 & "))")
        MyCA2 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!M" & RRC1 & "))")
        MyCA3 = Evaluate("=SUM(COUNTIF(" & Ws1 & "!C" & RRA & ":G" & RRA & "," & Ws1 & "!N" & RRC1 & "))")
        If MyC1 + MyCA + MyCA2 = 3 Then Worksheets(Ws1).Range("O" & RRC1).Value = Worksheets(Ws1).Range("O" & RRC1).Value + 1
        If MyC1 + MyCA + MyCA3 = 3 Then Worksheets(Ws1).Range("O" & RRC1).Value = Worksheets(Ws1).Range("O" & RRC1).Value + 1
        If MyC1 + MyCA2 + MyCA3 = 3 Then Worksheets(Ws1).Range("O" & RRC1).Value = Worksheets(Ws1).Range("O" & RRC1).Value + 1
        If MyC2 + MyCA + MyCA2 = 3 Then Worksheets(Ws1).Range("O" & RRC1).Value = Worksheets(Ws1).Range("O" & RRC1).Value + 1
        If MyC2 + MyCA + MyCA3 = 3 Then Worksheets(Ws1).Range("O" & RRC1).Value = Worksheets(Ws1).Range("O" & RRC1).Value + 1
        If MyC2 + MyCA2 + MyCA3 = 3 Then Worksheets(Ws1).Range("O" & RRC1).Value = Worksheets(Ws1).Range("O" & RRC1).Value + 1
        Next RRA
    Next RRC1
        T3 = (Timer - Inizio3) * 10 * 4
End Sub


A questo punto dovrai avviare la macro "Sub CalcAmbi23"

N.b, la presente macro fa il calcolo con le tabelle originali (prima richiesta) quindi con 10 righe per la prima tabella, 6 per la seconda e 4 per la terza se le condizioni sono cambiate il tempo calcolato sarà notevolmente diverso da quello effettivo
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Sponsor
 

Re: Cerca Combinazione numeri (Ambi-Terni)

Postdi giorgioa » 02/02/15 19:29

Salve,

ho copiato e incollato la macro e mi da errore "indice non incluso nell'intervallo"
alla macro TrovaAmbi24. La macro è stata incollata nel file originale che ho postato
ad inizio discussione.

Nel frattempo ho provato a portare i dati del Timer nelle macro che mi sono sistemato,
funziona, dichiarando anche il Public, ho rispettato le righe in cui hai messo il Timer
nelle tue macro però mi succede che mi conteggia quanto tempo ci impiega contemporaneamente
con la ricerca e quindi succede che mi da i dati quando ha finito l'elaborazione.
cioè ho messo dopo il for rrc1 Inizio1 = timer(Inizio1) e poi alla fine
il for del timer cioè prima di End Sub
Quindi facciamo il caso di avere una sola macro dove dovrei porre i dati del
timer esattamente?
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: Cerca Combinazione numeri (Ambi-Terni)

Postdi giorgioa » 02/02/15 22:00

Salve,

mi corrego al messaggio precedente,

al file iniziale non avevo inserito le macro.

Adesso che ho inserito le prime macro TovaAmbi ecc
più le ultime funziona.

Ciao
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: Cerca Combinazione numeri (Ambi-Terni)

Postdi Flash30005 » 02/02/15 23:44

Secondo me hai letto con superficialità e poi sei incappato nell'errore.

Non dovevi far altro che prendere il file originale con prima macro che effettua la ricerca situata nel modulo1

Hai chiesto di prevedere il tempo occorrente pertanto ti ho fatto una macro che calcola approssimativamente il tempo che occorre per fare la ricerca.

Essendo questa una macro che fa solo il calcolo va inserita a parte sia per avere un certo ordine sia per non creare confusione con la precedente macro e infatti avevo scritto di inserirla su un altro modulo (modulo2)
e di avviare la macro "CalcAmbi23".

A fine calcolo (abbastanza veloce) appare un messaggio che informa sul tempo occorrente e puoi scegliere se fare o no la ricerca.

Non dovevi toccare o spostare alcun timer, o altro.
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Cerca Combinazione numeri (Ambi-Terni)

Postdi giorgioa » 03/02/15 00:01

Salve,

come macro lanciavo sempre la macro trovaAmbi,
ora che ho letto il messaggio funziona tutto Timer e tutto.

Una ultima cosa ma solo come risposta sono stato costretto
ad eliminare davanti il nome delle macro Private, per evitare
di elimina questa parola davanti le macro cosa fare o non fare?
Ho eliminato anche Option Explicit, non so se ho fatto bene.
Ancora grazie e mi scuso per il disturbo.
Saluti
giorgioa
Utente Senior
 
Post: 773
Iscritto il: 16/04/12 15:00

Re: Cerca Combinazione numeri (Ambi-Terni)

Postdi Flash30005 » 03/02/15 00:38

Se non vuoi vedere il nome macro quando dal foglio richiami le macro esistenti devi inserire "Private" prima di Sub TrovaAmbi23
che diventerà
Private Sub TrovaAmbi23
ma a questo punto, però, sarai costretto a riportare tutto il codice che si trova nel modulo2 all'interno del modulo1
altrimenti andrà in errore.
In questo caso dovrai riportare in testa al modulo la riga Public del modulo2 in testa al modulo1 senza eliminare quello esistente ma aggiungendo il codice che da così
Public Ws1 As String
diventerà così
Public Ws1 As String, T1, T2, T3 As Double

Option Explicit, io non l'ho inserito nella macro e non capisco come facevi ad averlo.
Con Option Explicit devi dichiarare tutte le variabili e spesso evito di metterlo nel codice.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Cerca Combinazione numeri (Ambi-Terni)":


Chi c’è in linea

Visitano il forum: Nessuno e 35 ospiti