Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[EXCEL] Contatore macro

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

[EXCEL] Contatore macro

Postdi Bloodhound » 14/02/11 14:25

Ciao a tutti,
complimenti per il forum. Sono nuovo del forum, vi scrvio per un aiuto.
ho bisogno di creare una macro che faccia questo tipo di lavoro: "spero di riuscirmi a spiegare"
questa macro mi deve funazionare con una variabile, mi spiego.
Se in una cella A2 metto la parola OK (quindi questa è la variabile), nella cella adicaente deve inserimi il numero progressivo.
questa Macro dovrà funzionare anche saltando di righe.
Esempio:
A7 OK si contatore B7
A8 NOK no contatore B8
A9 NOK no contatore B9
A10 OK si contatore B10.

Spero di essere stato chiaro.....

Grazie
Bloodhound
Newbie
 
Post: 2
Iscritto il: 14/02/11 10:45

Sponsor
 

Re: [EXCEL] Contatore macro

Postdi maxmula » 14/02/11 14:38

Bloodhound ha scritto:Spero di essere stato chiaro.....


Hmmmmm.... forse non troppo.
In particolare faccio fatica a capire cos'è che devi contare. :eeh:

Provo a dirti cos'ho capito io, tu dimmi se è così...
    - Colonna A vuota; colonna B vuota.
    - Metto OK in A2; in B2 compare il valore "1"
    - Metto OK in a7; in B7 compare il valore "2"
    - Metto OK in A8; in B2 compare il valore "3"
    - Metto OK in A4; in B2 compare il valore "4"
    - Metto OK in A12; in B12 compare il valore "5"

    ...e così via.

In pratica vuoi assegnare un numero progressivo (va bene a partire da 1 o serve un altro range?) ogni volta che una cella in colonna A diventa "OK", indicando così l'"ordine di arrivo" di ogni consenso.
E' giusto?

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [EXCEL] Contatore macro

Postdi Bloodhound » 14/02/11 14:55

Complimenti Maxmula,
ha colto al volo il mio problema, va benissimo partire da 1.
Grazie 1000
Bloodhound
Newbie
 
Post: 2
Iscritto il: 14/02/11 10:45

Re: [EXCEL] Contatore macro

Postdi Anthony47 » 14/02/11 16:02

Ciao bloodhount, benvenuto nel forum.
Prova in B2 la formula
Codice: Seleziona tutto
=SE(A2="ok";CONTA.SE($A$2:$A2;"ok");"")
poi copia e incolla verso il basso.

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Contatore macro

Postdi maxmula » 14/02/11 17:49

Ciao Anthony,
il codice che hai proposto va bene se interessa solo contare quanti OK ci sono nella lista.

Diversamente, se è importante anche l'ordine in cui avvengono i consensi (non necessariamente secondo la sequenza naturale delle righe), occorre qualcosa di più elaborato, ad esempio trovare il valore massimo del conteggio, aggiungere 1 e scriverlo nella cella relativa alla riga modificata... sempre che non ci sia qualche funzione già integrata in Excel che fa proprio questo.

Ora purtroppo devo lanciarmi all'inseguimento di un autobus: appena posso ci faccio sopra un pensiero ;).

@ Bloodhound: nel frattempo potresti confermare se quanto sostengo sia ciò che ti serve o se invece può bastare il suggerimento di Anthony47?

Ciao!
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [EXCEL] Contatore macro

Postdi ricky53 » 14/02/11 18:01

Ciao Maxmula,
guarda meglio perchè la formula di Anthony non conta gli "ok" ma gestisce il contatore proprio come hai scritto tu.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [EXCEL] Contatore macro

Postdi Anthony47 » 14/02/11 23:41

Se in effetti l' obiettivo era mettere in col B una specie di "ordine di Ok in col A" allora la mia formula non e' idonea. Dovrebbe invece funzionare questa macro:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "A1:A100"  '<<< Area controllata
TCrt = "OK"   '<<< Stringa campione
If Intersect(Target, Range(CheckArea)) Is Nothing Then Exit Sub
If Target.Value = TCrt Then Target.Offset(0, 1) = Application.WorksheetFunction.CountIf(Range(CheckArea), TCrt)
End Sub
Tasto dx sul tab col nome foglio, scegli Visualizza codice, incolla il codice nel frame di dx; modifica le righe marcate <<<; per quanto riguarda TCrt si tenga presente che la verifica tiene conto del maiuscolo/minuscolo (che vengono considerati caratteri diversi).

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Contatore macro

Postdi maxmula » 14/02/11 23:57

Inutile, Anthony47 ne sa sempre una più di Satanasso! :lol:

Però, siccome mi diverto a programmare (o forse sono solo un po' malato di mente :P), in serata ho elucubrato il codice che segue:

Codice: Seleziona tutto
Function AGGIUNGI(INDIRIZZO As String, Optional COMANDO As String = "")
    Static POSIZIONE As Integer
    Static INSERITI(1 To 100) As String
   
    Select Case COMANDO
   
    Case "RESET"                'Ripristina array, indice dell'ordine d'arrivo e celle
        POSIZIONE = 0
        For k = 1 To UBound(INSERITI)
            INSERITI(k) = ""
        Next
        Cells("a2:a12").ClearContents
   
    Case Else                   'Restituisce l'ordine d'arrivo
        If INDIRIZZO <> "" Then
           
            FLAG_TROVATO = False
            INDICE = LBound(INSERITI)
            Do
                IND = INSERITI(INDICE)
                If IND = INDIRIZZO Then
                    FLAG_TROVATO = True
                End If
                If FLAG_TROVATO = True Or IND = "" Then Exit Do
                INDICE = INDICE + 1
            Loop
            If FLAG_TROVATO = True Then
                AGGIUNGI = INDICE
            Else
                POSIZIONE = POSIZIONE + 1
                INSERITI(POSIZIONE) = INDIRIZZO
                AGGIUNGI = POSIZIONE
            End If
        End If
    End Select
End Function




Risultato:Immagine

Per ripristinare lo stato iniziale, è necessario inviare un comando "RESET" alla funzione AGGIUNGI, tramite un pulsante (che con molta fantasia ho chiamato "RESET")

Codice: Seleziona tutto
Private Sub RESET_Click()
    a = AGGIUNGI("", "RESET")
End Sub


Beh, che dire... Di per sè tutto 'sto lavoro non serve a molto, visto che c'è già un programma più efficiente...
Spero però che vi siate divertiti nel leggerlo! :P

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [EXCEL] Contatore macro

Postdi Anthony47 » 15/02/11 15:07

Originale l' uso della user defined function...

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [EXCEL] Contatore macro

Postdi maxmula » 15/02/11 15:20

Beh, non per niente questo è lo sfondo che ho messo al mio desktop:

Immagine

:P

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [EXCEL] Contatore macro

Postdi Anthony47 » 15/02/11 15:22

May I suggest "Be Creative"?
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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Contatore macro":


Chi c’è in linea

Visitano il forum: alfrimpa, giorgio1979 e 9 ospiti