Condividi:        

[ EXCEL ] Macro per incrementare un valore

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 ] Macro per incrementare un valore

Postdi Gioggi » 12/02/11 18:27

Salve a tutti! Premetto che sono un neofita in VBA e quindi spero che qualche buon anima voglia darmi un aiutino.Il problema è questo:

Con una macro vorrei cercare di incrementare di 1 la cella sottostante.

Vi faccio un esempio,diciamo che in A1 ho 2000,quando faccio partire la macro vorrei che A2 si incrementasse di 1 e cosi via
A1 2000
A2 2001
A3 2002
ecc. ecc..

Vi sembrera una cosa banale.Ma per me è molto importante
Grazie
Gioggi
Newbie
 
Post: 2
Iscritto il: 12/02/11 18:08

Sponsor
 

Re: [ EXCEL ] Macro per incrementare un valore

Postdi ricky53 » 13/02/11 03:09

Ciao,
prima di tutto benvenuto nel nostro forum.

Veniamo al tuo quesito:
per fare quallo che hai scritto non è necessaria una macro, ti basta scrivere in "A2"
Codice: Seleziona tutto
=A1+1
e poi copiare in basso fino alla cella che ti occorre
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. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [ EXCEL ] Macro per incrementare un valore

Postdi Gioggi » 13/02/11 12:48

Il problema è che mi serve una macro per rendere la cosa dinamica, ho risolto parzialmente usando il registratore:
Codice: Seleziona tutto
Sub incremento()

    ActiveCell.FormulaR1C1 = "=R[-1]C+1"
    Range("A1").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C+1"
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "=R[-1]C+1"
    Range("A3").Select
End Sub


L'errore che mi si presenta è una macro poco "pulita",non si potrebbe risolvere in qualche modo?
Grazie
Gioggi
Newbie
 
Post: 2
Iscritto il: 12/02/11 18:08

Re: [ EXCEL ] Macro per incrementare un valore

Postdi Anthony47 » 13/02/11 15:16

Benvenuto nel forum anche da parte mia.
diciamo che in A1 ho 2000,quando faccio partire la macro vorrei che A2 si incrementasse di 1 e cosi via
A1 2000
A2 2001
A3 2002
ecc. ecc..

Pero' l' esempio con A1, A2 e A3 non so come collegarlo con la descrizione, in cui e' descritta solo la relazione tra A1 e A2. Anche la macro postata lascia parecchi dubbi, perche' il comportamento e' quello che puoi ottenere con la formula suggerita da Ricky.
Quindi spiega quali sono i valori iniziali di A2 e A3 e come dovrebbero evolvere tali celle; mi raccomando, evita l' uso immediato di ecc ecc…

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

Re: [ EXCEL ] Macro per incrementare un valore

Postdi samd » 19/03/14 23:33

Ciao,

saluti a tutti, sono nuovo :)
Ho bisogno della vostra competenza per un problema che non riesco a risolvere da solo.
Ho creato una macro che, compilata una cella in colonna D, mi copia la data del giorno in colonna A. In colonna B vorrei che venisse immesso automaticamente un numero progressivo che parta da 1 e che s'incrementi in base ai dati inseriti in colonna D. Cioè, se in colonna D ho inserito 4 record,in colonna B dovrebbe comparirmi il numero 4 e così via. Poiché al variare della data, il conteggio deve ripartire da 1, non posso usare le formule B1+1, B2+1, B3+1 , B4+1 etc.
Spero che riusciate a trovarmi un rimedio!
Grazie per l'aiuto.
samd

Dimenticavo... dovrebbe funzionare su Excel 2003 e successivi
samd
Newbie
 
Post: 8
Iscritto il: 19/03/14 23:25

Re: [ EXCEL ] Macro per incrementare un valore

Postdi Anthony47 » 20/03/14 01:41

Ciao samd, benvenuto nel forum.
Quindi vuoi inserire in colonna B un contatore che incrementi fintanto che la data in colonna A non cambi... Il modo piu' semplice e' che nella tua macro aggiungi una istruzione del tipo
If DataOdierna>DataPrecedente Then ColonnaB=1 Else ColonnaB=ColonnaB(-1)+1

Se ad esempio in XX c' e' la riga corrente, il codice potrebbe diventare
Codice: Seleziona tutto
If Cells(XX,"A") >Cells(XX-1,"A") Then Cells(XX, "B")=1 Else Cells(XX,"B")=Cells(XX-1,"B")+1

E se non risolvi, allora scrivi ancora pubblicando il codice della macro che al momento hai in uso.

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

Re: [ EXCEL ] Macro per incrementare un valore

Postdi samd » 20/03/14 16:27

Ciao Anthony47

grazie mille per avermi risposto così rapidamente: il tuo codice funziona e fa quello che avevo chiesto facesse.
Ora però, mettendolo in pratica, mi accorgo che non funziona in tutti i casi che potrebbero presentarsi. E cioè, se anzichè la data odierna decidessi di mettere una data precedente (più vecchia) per la quale era già partito un contatore, la macro mi incrementa di 1 il numero che trova nella cella immediatamente precedente. Ad es. se il contatore del 19-03-14 era arrivato a 6, e quello del 20-3 è arrivato a 3, interrompendo la registrazione con data 20-3 e riprendendo quella con data 19-3, la macro mi dà il progressivo 4 mentre io vorrei mi desse il 7 (continuando appunto la numerazione relativa al 19-03).
Riassumendo, il codice dovrebbe andare a cercare il progressivo più alto associato a una certa data (che imposto io) e incrementarlo di 1.
Grazie.

Ciao
samd
Newbie
 
Post: 8
Iscritto il: 19/03/14 23:25

Re: [ EXCEL ] Macro per incrementare un valore

Postdi Anthony47 » 21/03/14 01:19

Non ho capito come con la macro inserisci un valore a tuo piacere; comunque sempre col concetto che XX contiene la riga corrente, allora il codice che calcola in funzione della lista preesistente diventa
Codice: Seleziona tutto
Cells(XX, "B") = Evaluate("MAX(--(A1:A" & (XX - 1) & "=A" & XX & ")*(B1:B" & (XX - 1) & "))+1")


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

Re: [ EXCEL ] Macro per incrementare un valore

Postdi samd » 21/03/14 08:10

Anthony47 ma quante ne sai? :o funziona perfettamente!
Per rispondere al tuo dubbio, la data la imposto io manualmente nel giorno in cui faccio una trascrizione, non è la macro a farlo.
Grazie ancora per il tuo preziosissimo contributo risolutivo!
Ciao
samd

PS mi sa che ci incontreremo in qualche altro post :)
samd
Newbie
 
Post: 8
Iscritto il: 19/03/14 23:25

Re: [ EXCEL ] Macro per incrementare un valore

Postdi Anthony47 » 21/03/14 19:32

PS mi sa che ci incontreremo in qualche altro post :)
Ti aspettiamo trepidanti :D
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [ EXCEL ] Macro per incrementare un valore

Postdi samd » 22/03/14 22:22

@ Anthony47
E invece ci incontriamo nuovamente qui :D

Testando il codice è sorto un altro problema: l'ultimo codice che mi hai postato

Cells(XX, "B") = Evaluate("MAX(--(A1:A" & (XX - 1) & "=A" & XX & ")*(B1:B" & (XX - 1) & "))+1")

come ti dicevo funziona, però mi accorgo solo ora che restituisce un errore nel caso di prima registrazione in assoluto, quando cioè in colonna A e B mancano i dati da confrontare.
Visto che il primo codice che avevi scritto funzionava in caso di prima registrazione, ho provato anche a integrarlo con il secondo, senza esito (quel poco che conosco di VBA lo sto imparando "per deduzione" - per così dire- cercando di interpretare il linguaggio).
Grato per ciò che potrai fare.
samd
samd
Newbie
 
Post: 8
Iscritto il: 19/03/14 23:25

Re: [ EXCEL ] Macro per incrementare un valore

Postdi Anthony47 » 23/03/14 22:40

Se la cella B che devi compilare sara' inizialmente vuota allora puoi usare
Codice: Seleziona tutto
Cells(xx, "B") = Evaluate("MAX(--(A1:A" & (xx) & "=A" & xx & ")*(B1:B" & (xx) & "))+1")
Ma il mio suggerimento e' che i tuoi dati partano sempre da riga 2, avendo usato riga 1 per inserire idonee intestazioni di tabella.

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

Re: [ EXCEL ] Macro per incrementare un valore

Postdi samd » 24/03/14 20:51

Anthony47,

mi spiace approfittare della tua disponibilità e pazienza, scusami!
La tua ultima riga di codice funziona, perchè mi dà correttamente "1" in caso di prima registrazione; succede però questo:

- se modifico il contenuto della cella in colonna D (quella da cui prende avvio l'evento) dopo che la prima scrittura ha generato il primo numero progressivo "1", questa modifica provoca un incremento (+1) di quell'"1" iniziale (che quindi diventa "2" e che naturalmente s'incrementa ulteriormente per ogni variazione sempre della stessa cella): in pratica somma +1 a quello che era il suo valore un momento prima. Io invece vorrei che il progressivo già esistente restasse invariato.
Non so se sono riuscito a spiegarmi sufficientemente, in caso contrario dimmi tu se preferisci che t'invii il codice o il file.
Grazie ancora,
samd
samd
Newbie
 
Post: 8
Iscritto il: 19/03/14 23:25

Re: [ EXCEL ] Macro per incrementare un valore

Postdi Anthony47 » 25/03/14 02:27

Te l' avevo detto: " Se la cella B che devi compilare sara' inizialmente vuota allora etc etc"
Visto che non ti piace l' idea che in riga 1 debbano esserci delle intestazioni, allora il mio uggerimento e' che quando parte questa macro che deve finire per compilare la cella B allora la cella B venga pulita, tramite qualcosa come
Codice: Seleziona tutto
Cells(XX,2).Clearcontents


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

Re: [ EXCEL ] Macro per incrementare un valore

Postdi samd » 25/03/14 20:15

Ciao Anthony47,

non è che non mi piaccia l'idea che in riga 1 ci siano delle intestazioni, è che le ignoro proprio :oops: .
Onestamente, quando hai scritto: "Ma il mio suggerimento e' che i tuoi dati partano sempre da riga 2, avendo usato riga 1 per inserire idonee intestazioni di tabella." pensavo intendessi altro, non conoscendo le intestazioni (e non pensando d'essere stato finora così ignorante :D ).Visto che hai "insistito" sulle intestazioni, ho fatto una ricerca su google scoprendone solo ora la loro esistenza! Appena avrò un po' di tempo le studierò, così da tornare qui un po' più istruito, naturalmente dopo essermi sforzato di correggere la macro secondo questo tuo suggerimento. Intanto grazie e scusa per il tempo che t'ho fatto perdere fin qui.
Ciao
samd
samd
Newbie
 
Post: 8
Iscritto il: 19/03/14 23:25

Re: [ EXCEL ] Macro per incrementare un valore

Postdi Anthony47 » 25/03/14 23:25

Forse hai consultato il sito della nasa, perche' le intestazioni "in testa" a una tabella servono semplicemente come promemoria su significato di quei valori; in molte circostanze Excel forzatamente interpreta la prima riga come intestazione, ad esempio quando inserisci il filtro automatico sulla colonna.
La presenza di una riga descrittiva sopra la prima riga dei dati (e delle formule) consente di usare formule semplificate per il calcolo del "pregresso", cioe' di quanto avvenuto "fino alla riga soprastante"; se invece i dati e le formule partono da riga 1 allora dovresti usare istruzioni diverse a seconda che sei su riga1 oppure su tutte le altre.
La presenza di una intestazione unisce l' utile (e' bello sapere che in quella colonna e' riportata mettiamo la Distanza in Mparsec piuttosto che la Magnitudine di Holetsheck corretta col metodo di Hopmann) alla pigrizia (l' uso di un solo tipo di istruzioni).

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


Torna a Applicazioni Office Windows


Topic correlati a "[ EXCEL ] Macro per incrementare un valore":

BTp Valore
Autore: MarioLombardi
Forum: Forum off-topic
Risposte: 2

Chi c’è in linea

Visitano il forum: Nessuno e 60 ospiti

cron