Condividi:        

macro excel per som incrementale di apparizione num casuali

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

macro excel per som incrementale di apparizione num casuali

Postdi marcus69 » 19/10/17 14:47

ciao a tutti,
ho appena visto questa discussione,
viewtopic.php?p=436795

ma purtroppo la soluzione non funziona nel mio caso, e non capisco dove sbaglio.

Ho una serie dinumero casuali nella colonna a:a10 ( dieci numeri casuali da 1 a 30 che variano alla pressione di f9 )

Ho i marker di controllo in b1,b2,b3 ( diciamo 1-5-7 )
ho il conteggio in c1,c2.c3 di quante volte i marker si presentano nell ultimo ricolacolo

Vorrei contare nella colonna d ( d1,d2, d3 ) quante volte ad ogni pressione di f9 i miei marker si presentano in modo incrementale

credevo di risolvere con quella macro ma non sono riuscito...


grazie
Marcus
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Sponsor
 

Re: macro excel per som incrementale di apparizione num casu

Postdi wallace&gromit » 19/10/17 21:52

Ciao Marcus e benvenuto. Innanzitutto complimenti per aver ripescato un post che è un cimelio: Anthony e Flash che si correggono a vicenda, si poteva intitolare "scontro tra titani"! Malgrado ciò vorrei buttarti là una soluzione senza macro,che sfrutta il ricalcolo manuale con f9 escludendo le tabelle, in modo che queste ultime abbiano un ritardo che ti permette di tenere traccia dei risultati precedenti. Per adattare questa tecnica al tuo caso mi ci vorrebbe però un po' di tempo che ora non ho, se hai pazienza mi ripresento quando riesco a farlo. Nel frattempo vediamo se ritorna in campo uno dei titani.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: macro excel per som incrementale di apparizione num casu

Postdi marcus69 » 20/10/17 10:41

Ciao, Grazie,
ben felice si sapere una soluzione che non usa MAcro, attedeno speranzoso.

Nel frattempo :
la Macro del post linkato ora mi funziona, l'errore era che io assegnavo un range di celle mentre devo specificarne una soltanto.
Il problema che sorge ora è : ho 5 colonne per 10 valori ( 50 valori totali) non sono in grado di spiegare a VBA che deve considerare l 'intervallo a1:e10 . MI restituisce errore.

If Range("A1:E10") = Range("G1") Then Range("J1") = Range("H1") + Range("J1")
anche cosi
If Range("A1:E10").select = Range("G1") Then Range("J1") = Range("H1") + Range("J1")

in a1:e10 ho i miei 50 valori che cambiano ogni volta che cliccho f9
in g1, g2 , g3 ho i valori impostati manualmente per il confronto
in j1 ho un semplice "conta Se " escono i valori di riferimento nell'intervallo specificato
in h1 ho la somma di ogni "visualizzazione " +" storico "

Se scrivo le singole linee da a1, a2.... e10 funziona perfettamente. Non riesco a dargli la selezione in tre righe ( ogni riga per un riferimento di valore )

Inoltre mi sono complicato la vita perchè ogni volta che clicco f9 e ricalcolo, vorrei tenere il contenggio, ma con
Private Sub Worksheet_Change()
aho provato ad impostare la condizione
Range a1 <> "s" then range m1 +1
( A1 è un numero sarà sempre diverso da "S")
ma non funziona...
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: macro excel per som incrementale di apparizione num casu

Postdi wallace&gromit » 20/10/17 10:46

in ogni caso è meglio che pubblichi quello che hai, perché prima parlavi di a1:a10 e ora di a1:e10.
Se vediamo il file magari riusciamo a cavarne qualcosa.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: macro excel per som incrementale di apparizione num casu

Postdi marcus69 » 20/10/17 11:04

Private Sub Worksheet_Calculate()
If Range("A1") = Range("G1") Then Range("J1") = Range("H1") + Range("J1")
If Range("A1") = Range("G2") Then Range("J2") = Range("H2") + Range("J2")
If Range("A1") = Range("G3") Then Range("J3") = Range("H3") + Range("J3")
If Range("A1") <> "s" Then Range("o1") = Range("o1") + 1

End Sub

questo è il codice che funziona ( grazie a voi: ho studiato e adattato quello che c'è nel forum )
conta anche gli eventi ed è ok-

Io però non devo conforntare solo il valore in a1 ( con i valori in g1, g2, g3 ) , ma il valore di a1:a10 b1:b10.... e1:e10
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: macro excel per som incrementale di apparizione num casu

Postdi Anthony47 » 20/10/17 19:37

Perdona, ti chiederei di illustrare meglio la richiesta.
Ho capito che hai dei dati randomici in A1:E10; poi hai 3 numeri in G1:G3.

Su questi dati che cosa devi calcolare?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro excel per som incrementale di apparizione num casu

Postdi marcus69 » 20/10/17 21:58

ATTENZIONE i file allegati, da qualche parte c'è un errore e potrebbe partire un loop infinito

Ciao, grazie per la risposta.
Allego i due file di esempio cosi ci capiamo.

Il mio obiettivo è
1) creare nelle colonne A,B, C, D , E e nelle righe dalla 1 alla 10 dei numeri casuali da 1 a x ( per un totale di 50 numeri )
fatto.
2) scegliere nelle celle g1, g2, g3 tre(3) valori di riferimento e contare quante volte appaino nella matrice dei 50 numeri casuali
Fatto
3) Contare storicamente quante volte appaiono i numeri
NON fatto, o più precisamente fatto a metà, grazie al link nel mio primo post sono risalito ad un VBA di una tua soluzione ( @Anthony47 ), dove riesco ad usare una VBA per "monitorare lo storico della cella A1.
If Range("A1") = Range("G1") Then Range("J1") = Range("H1") + Range("J1")

Per tutte le altre celle devo riscrivere a mano la stringa qui sopra cambiando i valori,
Ma RANGE permette di prendere in esame una selezione, ma quando lo faccio, non so dove sbaglio il contare non funziona più
4) contare il numero dei ricalcoli, in modo da poter percentualzziare x ricalcoli, VS y uscite in una % di uscita dei valori desiderati.
Fatto, ma funziona un po si un po no, se provo a modificare il codice con elementi per il punto 5 , qui sotto, blocco tutto
5) mettere un automatismo ( commentato nel codice dei due esempi ) che confronti una cella con un valore, e che "simuli" ( ricalcoli) il foglio in automatico per n volte, in modo da non dover io manualmente fare "f9"

ATTENZIONE i file allegati, da qualche parte c'è un errore e potrebbe partire un loop infinito


esempi
https://www.dropbox.com/s/gpl56lylmf7nx ... o.zip?dl=0
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: macro excel per som incrementale di apparizione num casu

Postdi Anthony47 » 21/10/17 00:39

La mia proposta:
In un file nuovo riservi l'area A1:E18 ai numeri random, ma non scrivere nulla nelle celle; riservi da G1 verso il basso ai "numeri di riferimento".
A destra dei numeri di riferimento (quindi da H1 verso il basso) scrivi le formule che calcolano la presenza del numero nell'elenco randomico; vanno bene quelle che hai usato:
Codice: Seleziona tutto
=CONTA.SE($A$1:$E$10;G1)

Riservi la colonna J per tenere traccia della somma delle uscite, che saranno incrementate a ogni nuova iterazione del calcolo, che viene effettuato con questa macro:
Codice: Seleziona tutto
Sub RandStats()
Dim myRan As String, cCell As Range, spRan As Range
Dim rMin As Long, rMax As Long, mySpie As String
'
myRan = "A1:E10"        '<<< L'area da riempire con numeri random
rMin = 0                '<<< Il valore Min dei numeri random
rMax = 18               '<<< Il valore Max dei numeri random
mySpie = "G1"           '<<< L'area dove cominciano i numeri sotto esame
'
Set spRan = Range(Range(mySpie), Range(mySpie).End(xlDown))
'***1
    For Each cCell In Range(myRan)
        cCell.Value = Application.WorksheetFunction.RandBetween(rMin, rMax)
    Next cCell
    For Each cCell In spRan
        cCell.Offset(0, 3) = cCell.Offset(0, 1) + cCell.Offset(0, 3)
    Next cCell
    spRan.Cells(spRan.Rows.Count + 1, 4) = spRan.Cells(spRan.Rows.Count + 1, 4) + 1
'***2
End Sub

Eventualmente crea un pulsante sul foglio di lavoro e associagli la Sub RandStats.

La macro si occupera' di compilare i numeri random e successivamente di sommare ai valori di colonna J i conteggi del sorteggio corrente (colonna H).
In coda a questi valori ci sara' un contatore che incrementa a ogni ciclo.

Su questi output crei eventualmente i dati percentuali e un eventuale grafico; tenendo presente che il grafico rallenta l'esecuzione del ciclo della macro.
Le istruzioni marcate <<< consentono di usare aree diverse da quelle descritte; va tenuto a mente comunque che il calcolo delle uscite correnti va fatto 1 colonna piu' a destra rispetto ai numeri da esaminare, mentre l'accumulo dei risultati e' fatta 3 colonne piu' a destra.

Infine, se vuoi ripetere N volte i calcoli all'interno della stessa macro, ti bastera' inserire sotto le righe marcate ***1 e ***2 rispettivamente
Codice: Seleziona tutto
For I=1 to IlNumeroDiVolte    'es For I=1 to 100

Next I

Il loop infinito e' legato alla macro di Worksheet_Change, che continua a scattare man mano che la macro stessa modifica il foglio. Con quanto proposto non serve nessuna altra macro, in aggiunta a quanto ti ho detto.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro excel per som incrementale di apparizione num casu

Postdi marcus69 » 21/10/17 13:51

sei un drago. davvero.
Sto studiando riga per riga quello che mi hai postato ( mi sono inventato questa cosa in funzione di una chiacchierata con amici, e ne ho approfittato per concretizzare in reale quella che fu una chiacchierata , fondamentalmente è un esercizio didattico per la mia formazione personale)

Quindi il mio approccio era sbagliato o "elementare"?

L'attributo range, perche non funzionava applicato ad una selezione?
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39

Re: macro excel per som incrementale di apparizione num casu

Postdi Anthony47 » 21/10/17 23:47

La vecchia discussione da cui sei partito usava formule per creare i numeri random con l'obbligo quindi di lavorare in ricalcolo Manuale (cioe' non Automatico), ma basta poco per andare in loop infinito (o crash di excel) o avere dei risultati apparentemente errati perche' i numeri sono cambiati "dopo" i calcoli di presenza.
Ho quindi preferito generare i numeri all'interno della macro; ritengo questo approccio piu' lineare e governabile, non avendo bisogno di impostazioni diverse da quelle standard (es Ricalcolo = Automatico).

Anche Selection ha la proprieta' Range; in che contesto hai provato a usarla, come e con quali risultati?

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro excel per som incrementale di apparizione num casu

Postdi marcus69 » 07/11/17 09:25

CIAO scusa il ritardo nella risposta sono stato fuori per lavoro.
La vecchi discussione con il vecchio codice partivo dal pressupposto che la proporietà RANGE potesse applicarsi ad una serie di 10 righe e 5 colonne, ma cosi non avveniva.

If Range("A1:E10") = Range("G1") Then Range("J1") = Range("H1") + Range("J1")

la prima parte del codice A1:E1 mi dava un errore, e Range funzionava solo con una specifica e unica cella target.

MI chiedevo se fossi io a sbagliare o se non fosse possibile
marcus69
Utente Senior
 
Post: 113
Iscritto il: 19/10/17 14:39


Torna a Applicazioni Office Windows


Topic correlati a "macro excel per som incrementale di apparizione num casuali":


Chi c’è in linea

Visitano il forum: Nessuno e 29 ospiti