Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel] CONTA NUM con blocco $ mobile sul primo valore utile

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: [Excel] CONTA NUM con blocco $ mobile sul primo valore u

Postdi Anthony47 » 18/04/14 02:12

Humm... Rimango perplesso.
Comunque e' possibile che questa funzione possa fare il calcolo che dici:
Codice: Seleziona tutto
Function GPSum(ByRef myArea As Range) As Variant
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=101754
Dim Cella As Range, I As Long, LVal, CCVal, myArr(1 To 4) As Integer, FStart As Boolean
Dim DiffCnt As Long, resArr(), myR As Long, LmyR As Long, FLexit As Boolean, NxVal, NNxVal
Dim ImyR As Long, JmyR As Long
'
ReDim resArr(1 To myArea.Rows.Count)
For myR = 1 To myArea.Rows.Count
    CCVal = myArea.Cells(myR, 1).Value
    If CCVal <> "" Then
        myArr(CCVal) = 1
        If Application.WorksheetFunction.Sum(myArr) = 4 Then
            resArr(myR) = mysum + 1
            FLexit = True
            GoTo ExitA
        End If
           
        NxVal = "": NNxVal = ""
        For ImyR = myR + 1 To myArea.Rows.Count
            If NxVal = "" Then NxVal = myArea.Cells(ImyR, 1).Value
            If NNxVal = "" Then NNxVal = myArea.Cells(ImyR + 1, 1).Value
           
            If NxVal <> "" And NNxVal <> "" Then Exit For
        Next ImyR
        If (CCVal <> LVal And CCVal <> NxVal) Then 'Or (CCVal = LVal And CCVal <> NxVal And NxVal <> NNxVal) Then
            FStart = True
        End If
       
        If FStart Then
            mysum = mysum + 1
            resArr(myR) = mysum
        End If
        LVal = CCVal
    End If
ExitA:
    If FLexit Then
        FLexit = False
        FStart = False
        LVal = ""
        mysum = 0
        Erase myArr
    End If

Next myR
GPSum = Application.WorksheetFunction.Transpose(resArr)
End Function
E' una funzione a matrice, la formula va introdotta una sola volta su tutta l' area dei risultati; la procedura piu' semplice e' questa:
-inserisci la formula nella prima cella dei risultati; es in B3 inserisci =GPSum(A3:A30)-selezioni l' area completa, es da B3 a B30, premi F2, premi Contr-Maiusc-Enter
Eventuali modifiche alla formula vanno fatte selezionando tutte le celle che la contengono.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: [Excel] CONTA NUM con blocco $ mobile sul primo valore u

Postdi okcoral » 18/04/14 11:33

Non capisco la tua perplessità :)

La funzione risponde in pieno alla mie domande
Permettimi di dirti bravo.

Ora posso terminare il mio progetto, ho imparato qualcosa di nuovo.

Mille volte grazie Anthony47 :) :) :)
Windows 7 Office 2013
okcoral
Utente Junior
 
Post: 36
Iscritto il: 26/12/11 00:30
Località: Ivrea

Re: [Excel] CONTA NUM con blocco $ mobile sul primo valore u

Postdi okcoral » 18/04/14 13:12

Chiedo scusa

Ad una verifica approfondita ho capito le tue perplessità

nell'entusiasmo delle prime prove fatte non ho visto il "caso" che mette in errore la funzione

La funzione conteggia bene nella maggior parte delle disposizioni casuali.

La funzione conteggia male quando comprende anche i RIPETUTI .

Faccio un esempio :

questo è quello che fa attualmente

4 0

4 0
4 0

2 1

1 2

3 3 conteggia il 3 come ultimo della serie perché comprende i 4 ripetuti nella SERIE
....................
2 1
1 2
4 3


dovrebbe invece fare cosi :

4 0

4 0
4 0

2 1

1 2

3 3

2 4
1 5
4 6 conteggia il 4 come ultimo della serie perché non comprende i ripetuti come è giusto che sia.
..............................

3 1

2 2

4 3

ecc...

ecc..


per il resto la funzione svolge bene il suo compito

.....ci siamo quasi
Windows 7 Office 2013
okcoral
Utente Junior
 
Post: 36
Iscritto il: 26/12/11 00:30
Località: Ivrea

Re: [Excel] CONTA NUM con blocco $ mobile sul primo valore u

Postdi Anthony47 » 19/04/14 02:41

La funzione non conteggia male, ma calcola tutto come richiesto :diavolo:

Non escludo una prossima revisione per il conteggio come da ultima richiesta... :D

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] CONTA NUM con blocco $ mobile sul primo valore u

Postdi okcoral » 19/04/14 10:51

ok

grazie per tutto il lavoro che hai fatto e l'aiuto,

quando vorrai ben venga la revisione

ciao

Buone festività
Windows 7 Office 2013
okcoral
Utente Junior
 
Post: 36
Iscritto il: 26/12/11 00:30
Località: Ivrea

Re: [Excel] CONTA NUM con blocco $ mobile sul primo valore u

Postdi Anthony47 » 23/04/14 00:54

Credo che questa versione possa andare:
F
Codice: Seleziona tutto
unction GPSumR1(ByRef myArea As Range) As Variant
'Vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=101754  R1
Dim Cella As Range, I As Long, LVal, CCVal, myArr(1 To 4) As Integer, FStart As Boolean
Dim DiffCnt As Long, resArr(), myR As Long, LmyR As Long, FLexit As Boolean, NxVal, NNxVal
Dim ImyR As Long, JmyR As Long
'
ReDim resArr(1 To myArea.Rows.Count)
For myR = 1 To myArea.Rows.Count
    CCVal = myArea.Cells(myR, 1).Value
    If CCVal <> "" Then
        If FStart Then myArr(CCVal) = 1    'R1m
        If Application.WorksheetFunction.Sum(myArr) = 4 Then
            resArr(myR) = mysum + 1
            FLexit = True
            GoTo ExitA
        End If
           
        NxVal = "": NNxVal = ""
        For ImyR = myR + 1 To myArea.Rows.Count
            If NxVal = "" Then NxVal = myArea.Cells(ImyR, 1).Value
            If NNxVal = "" Then NNxVal = myArea.Cells(ImyR + 1, 1).Value
           
            If NxVal <> "" And NNxVal <> "" Then Exit For
        Next ImyR
        If (CCVal <> LVal And CCVal <> NxVal) Then 'Or (CCVal = LVal And CCVal <> NxVal And NxVal <> NNxVal) Then
            FStart = True
        End If
       
        If FStart Then
            mysum = mysum + 1
            resArr(myR) = mysum
            myArr(CCVal) = 1    'R1a
        End If
        LVal = CCVal
    End If
ExitA:
    If FLexit Then
        FLexit = False
        FStart = False
        LVal = ""
        mysum = 0
        Erase myArr
    End If

Next myR
GPSumR1 = Application.WorksheetFunction.Transpose(resArr)
End Function

La formula sara' pertanto del tipo
Codice: Seleziona tutto
=GPSumR1(A3:A33)

(sempre da applicare su tutto l' intervallo con Contr-Maiusc-Enter)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] CONTA NUM con blocco $ mobile sul primo valore u

Postdi okcoral » 23/04/14 11:48

Fantastico la Function calcola esattamente "in tutti i casi possibili" la quantità dei 4 primi numeri naturali annullando quando
necessario , in testa ad ogni SERIE, tutti i NUMERI RIPETUTI .
Bellissimo lavoro Anthony47, spero che tutto questo possa servire nel presente e nel futuro a molti altri utenti in cerca di risposte
per problemi uguali o simili al mio. Grazie molte.

PROBLEMA RISOLTO
Windows 7 Office 2013
okcoral
Utente Junior
 
Post: 36
Iscritto il: 26/12/11 00:30
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] CONTA NUM con blocco $ mobile sul primo valore utile":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti