Condividi:        

aiuto formula excel

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

aiuto formula excel

Postdi Alvin73 » 26/12/12 22:24

ho un problema con una tabella che dovrei fare...


Immagine


in colonna A devo inserire dei numeri da 0 10 in modo casuale

in colonna D e precisamente da D2 a D12 ho i 10 numeri messi in fila per le statistiche

in colonna E.......... da E2 a E12 ho il numero delle uscite dei rispettivi numeri, che vengono ricavati con la semlice formula

=CONTA.SE(A1:A1000;1) (questa vale per il numero 1)

in colonna F........... da F2 a F12 dovrei avere il numero del ritardo attuale di ogni singolo numero, e quì mi son bloccato, non riesco ad arrivarci....
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Sponsor
 

Re: aiuto formula excel

Postdi Flash30005 » 27/12/12 06:48

Dovresti chiarire un paio di punti
1) se vanno bene anche le macro oppure sei desideri usare solo le formule (per i ritardi non so se si può fare con le formule)
2) nella colonna A li inserisci tu stesso i numeri casuali o vorresti che lo facesse una macro?

per quanto riguarda la formula in E2 (da copiare verso il basso)
puoi usare questa formula
Codice: Seleziona tutto
=CONTA.SE(A1:A1000;D2)


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-

Re: aiuto formula excel

Postdi Alvin73 » 27/12/12 15:10

innazi tutto ancora grazie per la vostra disponibilità...


i numeri li inserisco io

potrebbe anche andare bene una macro, perchè per l'inserimento dei numeri in colonna A uso una tastiera formata da 11 pulsanti con le macro che con il semplice click sul numero che devo inserire lo mette appunto in colonna, quindi una macro che potrebbe anche fare il calcolo dei ritardi, la potrei benissimo inserire sotto a quella dell'iserimento del numero

ti faccio un esempio della macro che ho per l'inserimento del numero 1

Codice: Seleziona tutto
Sub numero_1()

ActiveSheet.Unprotect Password:="abc"

volte = ActiveCell.Row
ActiveCell = "1"
Cells(volte + 1, 1).Select

ActiveSheet.Protect Password:="abc"
End Sub


con questa macro viene tolta prima la protezione al foglio di lavoro e poi va ad inserire nella cella selezionata (nostro caso colonna A) il numero 1, poi si posiziona nella cella sottostante, pronta per ricevere un altro numero e rimette la protezione al foglio

la protezione del foglio mi serve solo perchè se dovessi cliccare su un punto qualsiasi del foglio, (selezionando appunto una cella) e poi clicco sul numero da inserire, i numero verrebbe inserito non dove vorrei ma nel punto cliccato per errore...

a questo punto, e prima della protezione si potrebbe anche inserire una macro che faccia i calcoli come e dove vuole, e poi potrei benissimo concluderla con questa altra macro che mi riporterebbe la selezione subito sotto all'ultima cella usata


Codice: Seleziona tutto
Dim i As Integer
For i = 1 To 1000
If IsEmpty(Cells(i, 1).Value) Then
Cells(i, 1).Select
Exit Sub
End If
Next



quindi per riassumere una possibile macro potrebbe essere:

Codice: Seleziona tutto
Sub numero_1()

ActiveSheet.Unprotect Password:="abc"
volte = ActiveCell.Row
ActiveCell = "1"
Cells(volte + 1, 1).Select

IN MEZZO A QUESTE 2 POTREBE STARCI LA MACRO CHE CALCOLA I RITARDI


Dim i As Integer
For i = 1 To 1000
If IsEmpty(Cells(i, 1).Value) Then
Cells(i, 1).Select
Exit Sub
End If
Next
ActiveSheet.Protect Password:="abc"
End Sub


così ad ogni inserimento di un numero partirà in automatico anche la macro che calcola i ritardi

spero mi sia spiegato bene....
grazie in anticipo
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: aiuto formula excel

Postdi Flash30005 » 27/12/12 21:04

Secondo me puoi togliere tutte le macro e gli 11 tasti di assegnazione numero sulla colonna A
apri un nuovo file di excel praticamente vuoto
con Alt+F11 ti porti nell'editor del Vba
e senza aggiungere moduli
incollerai questo codice nel Vba del foglio1 (tra gli oggetti sul frame di sinistra)
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "A1:A1000"
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
Randomize (Timer)
Cas = Int(Rnd(11) * 11)
Target = Cas
UR = Range("A" & Rows.Count).End(xlUp).Row
Application.EnableEvents = False
Range("F2:F12").Value = UR
Range("B" & UR).Select
For NN = 0 To 10
    For RR = UR To 1 Step -1
        If Range("A" & RR).Value = NN Then
            Range("F" & NN + 2).Value = UR - RR
            GoTo SaltaNN
        End If
    Next RR
SaltaNN:
Next NN
Application.EnableEvents = True
End If
End Sub


Ora scriverai in D2:D12 gli 11 numeri come da tua immagine pubblicata
in E2:E12 inserisci la formula che ti ho postato
Codice: Seleziona tutto
=CONTA.SE(A1:A1000;D2)


Ora potrai cliccare in A1
poi in A2 etc

Invio anche questo file usato per il test

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-

Re: aiuto formula excel

Postdi Anthony47 » 27/12/12 21:07

Guarda il messaggio di Flash sopra.
Per calcolare i ritardi con formule (quindi lavorando sul tuo file originale), in F2
Codice: Seleziona tutto
=SE(CONTA.SE($A$1:$A$1000;D2)>1;GRANDE(SE($A$1:$A$1000=D2;RIF.RIGA($A$1:$A$1000);"");1)-GRANDE(SE($A$1:$A$1000=D2;RIF.RIGA($A$1:$A$1000);"");2);"")
da confermare con Contr-Maiusc-Enter, non il solo Enter; poi copia verso il basso.
Non conoscendo la regola del "ritardo", se il numero esce due volte consecutive la formula calcola "1"; eventualmente aggiungi ancora un "-1" nel "Se Vero" (per ottenere 0).

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

Re: aiuto formula excel

Postdi Alvin73 » 27/12/12 21:38

Flash30005 ha scritto:Secondo me puoi togliere tutte le macro e gli 11 tasti di assegnazione numero sulla colonna A
apri un nuovo file di excel praticamente vuoto
con Alt+F11 ti porti nell'editor del Vba
e senza aggiungere moduli
incollerai questo codice nel Vba del foglio1 (tra gli oggetti sul frame di sinistra)
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "A1:A1000"
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
Randomize (Timer)
Cas = Int(Rnd(11) * 11)
Target = Cas
UR = Range("A" & Rows.Count).End(xlUp).Row
Application.EnableEvents = False
Range("F2:F12").Value = UR
Range("B" & UR).Select
For NN = 0 To 10
    For RR = UR To 1 Step -1
        If Range("A" & RR).Value = NN Then
            Range("F" & NN + 2).Value = UR - RR
            GoTo SaltaNN
        End If
    Next RR
SaltaNN:
Next NN
Application.EnableEvents = True
End If
End Sub


Ora scriverai in D2:D12 gli 11 numeri come da tua immagine pubblicata
in E2:E12 inserisci la formula che ti ho postato
Codice: Seleziona tutto
=CONTA.SE(A1:A1000;D2)


Ora potrai cliccare in A1
poi in A2 etc

Invio anche questo file usato per il test

ciao



i ritardi li calcola bene.....

ma i numeri in colonna A li dovrei inserire io, ho scritto che sono casuali nel senso che non sappiamo cosa ci devo immettere....
ma li devo immettere io appena lo so
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: aiuto formula excel

Postdi Alvin73 » 27/12/12 21:39

Anthony47 ha scritto:Guarda il messaggio di Flash sopra.
Per calcolare i ritardi con formule (quindi lavorando sul tuo file originale), in F2
Codice: Seleziona tutto
=SE(CONTA.SE($A$1:$A$1000;D2)>1;GRANDE(SE($A$1:$A$1000=D2;RIF.RIGA($A$1:$A$1000);"");1)-GRANDE(SE($A$1:$A$1000=D2;RIF.RIGA($A$1:$A$1000);"");2);"")
da confermare con Contr-Maiusc-Enter, non il solo Enter; poi copia verso il basso.
Non conoscendo la regola del "ritardo", se il numero esce due volte consecutive la formula calcola "1"; eventualmente aggiungi ancora un "-1" nel "Se Vero" (per ottenere 0).

Ciao




con questa formula invece mi dice il ritardo appena esce per la seconda volta il numero
e no il ritardo attuale che ha e che è in corso....
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: aiuto formula excel

Postdi Flash30005 » 27/12/12 22:00

Sostituisci la macro contenuta nel Foglio1 con questa
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "A1:A1000"
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
Dim Message, Title, Default, MyValue
Message = "Immettere un valore da 0 a 10"
Title = "Inserimento Valori"
Default = ""
Cas = InputBox(Message, Title, Default)
Target = Cas
UR = Range("A" & Rows.Count).End(xlUp).Row
Application.EnableEvents = False
Range("F2:F12").Value = UR
Range("B" & UR).Select
For NN = 0 To 10
    For RR = UR To 1 Step -1
        If Range("A" & RR).Value = NN Then
            Range("F" & NN + 2).Value = UR - RR
            GoTo SaltaNN
        End If
    Next RR
SaltaNN:
Next NN
Application.EnableEvents = True
End If
End Sub

Clicchi su una cella della colonna A
appare un messagebox con input
digiti il valore da 0 a 10 e premi Invio

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-

Re: aiuto formula excel

Postdi Alvin73 » 28/12/12 00:22

ma non c'è proprio modo di inserire i numeri direttamente nella colonna A sia manualmente o con i bottoni che gia ho ?
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: aiuto formula excel

Postdi Flash30005 » 28/12/12 00:48

Ok
Ripropongo, allora la tua macro modificata
Codice: Seleziona tutto
Sub numero_1()
ActiveSheet.Unprotect Password:="abc"
volte = ActiveCell.Row
ActiveCell = "1"
Cells(volte + 1, 1).Select
Call Ritardi  '<<<< aggiungere queste due righe in tutte le macro comandate dal pulsante
Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Select  '<<<<< aggiungere questa riga in tutte le macro
ActiveSheet.Protect Password:="abc"
End Sub

Aggiungi questa macro che è valida per rutte le macro gestite dai tuoi pulsanti
Codice: Seleziona tutto
Sub Ritardi()
UR = Range("A" & Rows.Count).End(xlUp).Row
Range("F2:F12").Value = UR
For NN = 0 To 10
    For RR = UR To 1 Step -1
        If Range("A" & RR).Value = NN Then
            Range("F" & NN + 2).Value = UR - RR
            GoTo SaltaNN
        End If
    Next RR
SaltaNN:
Next NN
End Sub


Ciao

Elimina il codice postato precedentemente e situato nel foglio

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-

Re: aiuto formula excel

Postdi Alvin73 » 29/12/12 00:19

Perfettamente funzionante......

non sapre veramente come sdebitarmi, GRAZIE :)
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: aiuto formula excel

Postdi Alvin73 » 29/12/12 12:54

posso azzardmi a fare ultima domanda ?

Immagine


volendo avere a disposizione anche il ritardo attuale dei gruppi NUMERI ARI e NUMERI DISPARI

potrei fare altra macro come quella sopracitata e funzionante, ovviamente cambiando i riferimenti


esempio per i numeri pari...

Sub Ritardi_NP()
UR = Range("A" & Rows.Count).End(xlUp).Row
Range("G2").Value = UR
For NP = 0 To 10 <<<<<<<<<<<<<<<<<<<<< QUI ADESSO DOVREI INDICARE IL GRUPPO
For RR = UR To 1 Step -1
If Range("A" & RR).Value = NP Then
Range("G" & NP + 2).Value = UR - RR
GoTo SaltaNP
End If
Next RR
SaltaNP:
Next NP
End Sub

-----------------------------

Su ogni pulsante poi dovrei inserire anche

Call Ritardi_NP
-------------------------------------

come faccio a formare il gruppo PARI (2-4-6-8-10) ed il gruppo DISPARI (1-3-5-7-9) nella macro ?
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: aiuto formula excel

Postdi Flash30005 » 29/12/12 14:08

Sotituisci la macro "Ritardi" con questa
Codice: Seleziona tutto
Sub Ritardi()
UR = Range("A" & Rows.Count).End(xlUp).Row
Range("F2:F12").Value = UR
Pari = 0
Disp = 0
Range("G2:H2").Value = UR
For NN = 0 To 10
    For RR = UR To 1 Step -1
    If Range("A" & RR).Value Mod 2 = 0 Then
        If Pari = 0 Then
            Range("G2").Value = UR - RR
            Pari = 1
        End If
    Else
        If Disp = 0 Then
            Range("H2").Value = UR - RR
            Disp = 1
        End If
    End If
        If Range("A" & RR).Value = NN Then
            Range("F" & NN + 2).Value = UR - RR
            GoTo SaltaNN
        End If
    Next RR
SaltaNN:
Next NN
End Sub


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-

Re: aiuto formula excel

Postdi Alvin73 » 29/12/12 15:34

oserei dire perfetta...

un piccolo errore che non so se possibile rimediare...

lo zero viene considerato come numero pari nella macro

ma in realtà non farebbe parte ne dei pari e ne dei dispari, quindi dovrebbe aumentare entrambi i ritardi

un esempio

se ho come numeri usciti: 1-3-5-7 abbiamo un ritardo dei numeri pari di 4

se inserisco lo zero i pari si mettono a zero, cosa non reale perchè sarebbe a 5, ed i dispari si mettono a 1 il che andrebbe bene
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44

Re: aiuto formula excel

Postdi Flash30005 » 29/12/12 15:51

E' sufficiente aggiungere la condizione: se il valore è 0 salta controllo
Codice: Seleziona tutto
Sub Ritardi()
UR = Range("A" & Rows.Count).End(xlUp).Row
Range("F2:F12").Value = UR
Pari = 0
Disp = 0
Range("G2:H2").Value = UR
For NN = 0 To 10
    For RR = UR To 1 Step -1
    If Range("A" & RR).Value <> 0 Then  '<<<<< aggiunta condizione
        If Range("A" & RR).Value Mod 2 = 0 Then
            If Pari = 0 Then
                Range("G2").Value = UR - RR
                Pari = 1
            End If
        Else
            If Disp = 0 Then
                Range("H2").Value = UR - RR
                Disp = 1
            End If
        End If
    End If   '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< termine condizione
        If Range("A" & RR).Value = NN Then
            Range("F" & NN + 2).Value = UR - RR
            GoTo SaltaNN
        End If
    Next RR
SaltaNN:
Next NN
End Sub


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-

Re: aiuto formula excel

Postdi Alvin73 » 29/12/12 16:18

Sono proprio una patata lessa..... :cry:


GRAZIE VERAMENTE
Alvin73
Utente Junior
 
Post: 22
Iscritto il: 10/11/12 12:44


Torna a Applicazioni Office Windows


Topic correlati a "aiuto formula excel":


Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti