Condividi:        

[Excel] Aumentare un'intera colonna di una percentuale data

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] Aumentare un'intera colonna di una percentuale data

Postdi lallah » 08/08/06 04:06

salve,

ho bisogno di modificare i dati di una intera colonna di un listino prezzi aumentando gli importi (diversi tra loro) di una percentuale(sempre uguale). come posso fare senza dover riscrivere la formula in ogni cella?

successivamente, in un altro listino, dovrò applicare percentuali diverse a prezzi diversi (in base al contrassegno specificato in una colonna a èparte con lettera a, b c).
:)
... spero possiate aiutarmi e che mi rispondiate al più presto
grazie in anticipo
lallah
Newbie
 
Post: 3
Iscritto il: 08/08/06 03:54

Sponsor
 

Re: [Excel] Aumentare un'intera colonna di una percentuale d

Postdi cassioli » 08/08/06 10:53

lallah ha scritto:salve,

ho bisogno di modificare i dati di una intera colonna di un listino prezzi aumentando gli importi (diversi tra loro) di una percentuale(sempre uguale). come posso fare senza dover riscrivere la formula in ogni cella?

Puoi scrivere la formula in una cella e poi fare doppio clic sul quadratino in basso a destra in modo che venga copiata automaticamente in tutte le altre celle... (se e' solo che non ti va di copiarla a mano...)
Oppure usi una semplicissima macro, tipo:

Codice: Seleziona tutto
PERC = 30
NUM_CELLE=10
COLONNA = 1
for i = 1 to NUM_CELLE
  cells(i,COLONNA)=cells(i,COLONNA)+cells(i,COLONNA)*PERC/100
next


Ma è macchinoso e "complicativo"...

successivamente, in un altro listino, dovrò applicare percentuali diverse a prezzi diversi (in base al contrassegno specificato in una colonna a èparte con lettera a, b c).

... e quindi? Cosa vuoi fare?
Hai dieci prezzi divisi in 3 gruppi, e ad ogni gruppo devi applicare una percentuale diversa?
cassioli
Utente Senior
 
Post: 1014
Iscritto il: 05/03/04 11:02

copia incolla di colonne con formula

Postdi lallah » 08/08/06 13:22

grazie! (anche per la tempestività...)
;) ha funzionato...
solo che adesso non mi fa il copia incolla delle colonne che devo sostituire...credo cerchi il riferimento della formula che avevo inserito... l'errore, infatti è #RIF!
come potrei copiare i prezzi senza riferimento a formule, in modo da creare il listino definitivo??
(spero di essere stata chiara...)
lallah
Newbie
 
Post: 3
Iscritto il: 08/08/06 03:54

Re: copia incolla di colonne con formula

Postdi danieleg » 08/08/06 13:34

lallah ha scritto:grazie! (anche per la tempestività...)
;) ha funzionato...
solo che adesso non mi fa il copia incolla delle colonne che devo sostituire...credo cerchi il riferimento della formula che avevo inserito... l'errore, infatti è #RIF!
come potrei copiare i prezzi senza riferimento a formule, in modo da creare il listino definitivo??
(spero di essere stata chiara...)


In casi simili io creo un'altra colonna, nella quale trasferire i soli valori. Mi spiego Col A prezzo vecchio Col. B = col A*1,20, Per la colonna C copio la colonna A, poi sulla colonna C scelgo "incolla speciale" e lì l'opzione "Numeri" o equivalente.
A questo punto la colonna C contiene solo dei valori, e non più delle formule. Posso quindi ricopiare la colonna C al posto della A.
Avatar utente
danieleg
Utente Senior
 
Post: 850
Iscritto il: 10/07/06 15:58
Località: Vicino a Imperia

Postdi Anthony47 » 08/08/06 14:29

Benvenuto nel forum.

Per i primo problema hai un paio di possibilita’, in aggiunta a quanto gia' segnalato da cassioli e daniele:
1)se nella colonna dei Prezzi hai un valore e non una formula allora:
-scrivi in una cella il coefficiente di cui vuoi aumentare i prezzi (es. 1.075 per un incremento del 7.5%);
-poi selezione la cella, la copi (Contr-c), selezione tutte le celle che vuoi moltiplicare, poi Menu ->Modifica ->Incolla speciale; sulla finestra che si apre, nella zona “Operazione”, scegli Moltiplica; poi premi Ok.
-tutte le celle selezionate saranno moltiplicate per il coefficiente. Cancelli il coefficiente, che non serve ad altro.

2) se nella colonna Prezzi hai una formula, allora ti suggerisco
-metti come sopra in una cella il coefficiente di cui vuoi aumentare i prezzi; supponiamo che sia sul Foglio2 in posizione A2, cioe’ in un foglio diverso da quello del listino (cosi’ non rischi di stamparlo col listino).
-poi modifichi la prima delle formule dei prezzi aggiungendo *Foglio2!$A$2; quindi se al momento hai =LA-FORMULA-ATTUALE la modifichi in
=(LA-FORMULA-ATTUALE)* Foglio2!$A$2
Le parentesi potrebbero non essere necessarie ma mettile senza stare a verificare.
-poi copi questa prima formula (Contr-c) e la incolli su tutte le altre (selezioni le celle, poi Contr-v)
-in questo modo, qualsiasi sia il coefficiente, viene applicato su tutte le righe.

In realta’ potresti usare il metodo dell’ Incola speciale / Moltiplica anche nell’ ipotesi di formula, ma se c’ e’ gia’ una formula io preferirei lavorare appunto sulla formula

Problema dei coefficienti variabili
Questo problema lo dovrai necessariamente risolvere col le formule, procedendo cosi’:
-in un foglio libero ti crei una tabella: colonna uno scrivi i vari contrassegni, colonna due scrivi il coefficiente che vuoi applicare (usa il formato 1.075 (es) e non 7.5%)
-seleziona tutta la tabella, magari con un paio di righe vuote in fondo per eventuali aggiunte, e assegna a questo range il nome COEFF (con le celle selezionate, vai nella “Casella nome” e scrivici COEFF; oppure Menu ->Inserisci ->Nome ->Definisci; nella finestrella che si apre scrivi COEFF nella zona “Nomi nella cartella di lavori”, poi Ok); colora questa tabella in giallo per poterne riconoscere facilmente i limiti, in caso di aggiunta di altri contrassegni + coefficienti.

A questo punto, se l’ attuale listino e’ calcolato con una formula, modifica cosi’ la formula
=(LA-FORMULA-ATTUALE)*CERCA.VERT(C2;COEFF;2;0)
poi copia la formula nelle celle sottostanti. La formula e’ per la riga 2 con i contrassegni in colonna C; eventualmente modifica la formula inserendo la vera colonna.
Un eventuale errore #N/D significa che il contrassegno di quella riga non esiste nella tabella COEFF; controllare quindi la completezza della tabella COEFF, eventuali errori di battitura, o la presenza di caratteri spuri a inizio o fine stringa.

Se invece il prezzo fosse un valore, ad esempio in colonna D, allora io calcolerei il nuovo prezzo nella colonna E tramite la formula
=D2* CERCA.VERT(C2;COEFF;2;0)
poi nasconderei la colonna D (seleziona, poi Munu ->Formato ->Colonna ->Nascondi) in modo da visualizzare e stampare solo il nuovo prezzo.

Per pura curiosita’, potresti utilizzare anche un meccanismo di SE nidificate: SE(C2=contrassegno1;coeeficiente1;SE(C2=contrassegno2;coefficiente2; SE(…))), ma e’ una soluzione meno strutturata e quindi da non preferire.

Facci sapere, ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

grazie!

Postdi lallah » 08/08/06 23:52

;) ha funzionato, e il listino è a posto con poca fatica.

grazie a tutti per la chiarezza e disponibilità
lallah
Newbie
 
Post: 3
Iscritto il: 08/08/06 03:54

Postdi Alexsandra » 09/08/06 07:49

Visto che il mio intervento è stato determinante ti ringrazio a nome di tutta la sezione :lol: :lol: :lol:
Avatar utente
Alexsandra
Utente Senior
 
Post: 2358
Iscritto il: 09/01/06 20:31

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi hispanico87 » 31/01/10 20:22

Salve,

sono nuovo del forum e ovviamente sono piuttosto inesperto con Excel!
Ho voluto rispolverare questa vecchia discussione perchè mi servirebbe fare qualcosa di simile ma di più complesso.
Ho un listino nel quale nella Colonna C ho i nomi delle categorie mentre nella colonna N ho i prezzi dei prodotti; come faccio per aumentare i prezzi dei prodotti di una diversa percentuale a seconda della categoria??
Per esempio:
Categoria PLUTO vorrei aggiungere il 5%
Categoria PIPPO vorrei aggiungere il 6%
Categoria MINNI vorrei aggiungere il 3%

C'è un modo per farlo con il VBA?
Spero di essere stato chiaro!
VI riangrazio anticipatamente per l'aiuto!! :roll:
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi Anthony47 » 31/01/10 23:10

Non hai bisogno di usare il vba, bastano le funzioni di excel...
1) ti fai una tabellina su 2 colonne, con Categoria e Percentuale
2) poi usi Cerca.Vert per prelevare la percentuale da questa tabellina e usarla nelle formule di ricalcolo del listino

E' quanto descritto nella discussione precedente, nel terzo messaggio prima del tuo, alla voce "Problema dei coefficienti variabili "; segui quelle istruzioni e se non riesci ad applicarle posta ancora.

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

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi hispanico87 » 31/01/10 23:22

Il problema è che a me serve proprio il VBA!! :D
Praticamente vorrei inserire questa istruzione in una mega-macro autocostruita che filtra, ripulisce e mi restituisce il listino così come lo voglio io!
Lo faccio perchè il mio fornitore ogni giorno aggiorna il suo listino formato da circa 27000 prodotti mentre quelli che a me interessano sono poco più di 800.
Fare ogni giorno diverse operazioni "manuali" non mi sembra molto "azzeccato" in termini di tempo; considerando che il file del fornitore è praticamente sempre lo stesso, è decisamente più comodo premere un pulsante, aspettare un paio di minuti ed ottenere un file "pulito" ed adatto al mio sistema!!
Mi serve proprio il VBA... :oops:
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi Anthony47 » 31/01/10 23:36

Scrivi le nuove percentuali in tabella, i risultati si formano nelle celle.

Che cosa mi sfugge? In che cosa il vba e' piu' performante?
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi hispanico87 » 31/01/10 23:45

Anthony47 ha scritto:Scrivi le nuove percentuali in tabella, i risultati si formano nelle celle.

Scusami...non ho capito cosa intendi dire! :(

Il VBA mi servirebbe più per una questione di comodità; il file di origine ha sempre la stessa composizione e creare una macro che faccia tutte le operazioni che voglio (ogni giorno) credo sia più sensato che operare a mano!
Vorrei solo trovare un modo per risparmiare più tempo possibile! ;)
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi ricky53 » 01/02/10 00:04

Ciao,

non era meglio aprire una nuova discussione: per chiarezza di chi legge.

Mi aggiungo ad Anthony (un grosso ciao) per dire che non sempre le macro migliori di una serie opportuna di formule:
basta progettare bene i dati ed ottimizzare le formule da usare.

Comunque questa "mega-macro" cosa dovrebbe fare:

1. aprire il file del fornitore
2. carica i dati del nuovo listino in un foglio
3. trattare il ricarico (qui devi intervenire tu perchè non mi è chiaro qualcosa nei passaggi dove e cosa fare per calcolare il totale comprensivo del ricarico)
4. altro che devi dire tu

oppure

a. scrivi tu cosa deve fare la macro ma con passi precisi.

Ciao da Ricky53
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] Aumentare un'intera colonna di una percentuale data

Postdi Flash30005 » 01/02/10 00:39

Con le formule di Anthony hai il listino aggiornato (con l'aumento previsto) ad ogni variazione del listino base
Come dice Richy, non specifichi dove deve essere trascritto il nuovo listino
comunque questa macro trascrive nella colonna "O" i prezzi aggiornati (a fianco dei corrispondenti prezzi-base)
Codice: Seleziona tutto
Sub NuovoListino()
Dim PIPPO, PLUTO, MINNI As Long
Dim RP, ALTRO As Integer
RP = Range("C" & Rows.Count).End(xlUp).Row
PIPPO = 6
PLUTO = 5
MINNI = 3
ALTR0 = 1
Col = 15  '<<< corrisponde alla colonna "O"
For I = 2 To RP
For V = 1 To 3
    If UCase(Range("C" & I).Value) = "PIPPO" Then
        Cells(I, Col).Value = Range("N" & I).Value * (1 + (PIPPO / 100))
        GoTo salta
    End If
    If UCase(Range("C" & I).Value) = "PLUTO" Then
        Cells(I, Col).Value = Range("N" & I).Value * (1 + (PLUTO / 100))
        GoTo salta
    End If
    If UCase(Range("C" & I).Value) = "MINNI" Then
        Cells(I, Col).Value = Range("N" & I).Value * (1 + (MINNI / 100))
        GoTo salta
    End If
    Cells(I, Col).Value = Range("N" & I).Value * (1 + (ALTRO / 100))
salta:
    Next V
Next I
End Sub


Fai sapere
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: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi hispanico87 » 01/02/10 12:34

Ciao,

prima di tutto grazie a tutti per le risposte!
Il codice proposto da Flash30005 in linea di massima va benissimo però mi sbaglia a fare i calcoli!! :D
Per esempio: voglio aggiungere il 10% a 246,26 e mi da come risultato 248.72 quando invece dovrebbe venire circa 271!
Inoltre, nella colonna dove devono apparire i nuovi prezzi, non esce della prima riga!
Mi sfugge qualcosa? :?:


P.S. nel codice ho corretto ALTR0 (con lo zero) con ALTRO (con la vocale O) ;)
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi Flash30005 » 01/02/10 13:37

Nella variabile PIPPO, PLUTO etc va inserito solo 10 (non 10/100) dovrai mettere i numeri interi nelle variabili PIPPO, PLUTO, MINNI e i caratteri delle variabili nel Vb devono essere in maiuscolo (mentre nel foglio possono essere alti e bassi)?
In questa maniera otterrai il calcolo coretto.
Se vuoi, puoi anche impostare così la variabile
Codice: Seleziona tutto
PIPPO = 10 / 100

però dovrai cambiare la riga cosice in questa maniera
Codice: Seleziona tutto
        Cells(I, Col).Value = Range("N" & I).Value * (1 + PIPPO)



Invece, per la prima riga devi solo mettere 1 To Rp al posto del 2 To Rp del For - next
comunque invio di nuovo la macro nella quale ho variato a 10 la percentuale da applicare a PIPPO

Codice: Seleziona tutto
Sub NuovoListino()
Dim PIPPO, PLUTO, MINNI, ALTRO As Long
Dim RP As Integer
RP = Range("C" & Rows.Count).End(xlUp).Row
PIPPO = 10
PLUTO = 5
MINNI = 3
ALTR0 = 0
Col = 15  '<<< corrisponde alla colonna "O"
For I = 1 To RP
    If UCase(Range("C" & I).Value) = "PIPPO" Then
        Cells(I, Col).Value = Range("N" & I).Value * (1 + (PIPPO / 100))
        GoTo salta
    End If
    If UCase(Range("C" & I).Value) = "PLUTO" Then
        Cells(I, Col).Value = Range("N" & I).Value * (1 + (PLUTO / 100))
        GoTo salta
    End If
    If UCase(Range("C" & I).Value) = "MINNI" Then
        Cells(I, Col).Value = Range("N" & I).Value * (1 + (MINNI / 100))
        GoTo salta
    End If
    Cells(I, Col).Value = Range("N" & I).Value * (1 + (ALTR0 / 100))
salta:
Next I
End Sub


ho tolto anche un for next di troppo (era rimasto da una prova precedente) non comprometteva nulla ma triplicava il tempo di esecuzione della macro.
ALTRO = 0 significa che tutti i prodotti non corrispondenti alle variabili sopra menzionate non subiranno aumento
togliendo o commentando la riga
Codice: Seleziona tutto
Cells(I, Col).Value = Range("N" & I).Value * (1 + (ALTR0 / 100))

eviti di trascrivere il valore del listino base


Copia l'intero codice,
metti sulla colonna C la dicitura Pippo e in N (riga corrispondente) il valore 246,26 otterrai in O 270,886
Chiaramente se non c'è Pippo ma Minni avrai un valore più basso

Fai sapere
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: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi hispanico87 » 01/02/10 14:24

Credo di aver capito quale è il mio problema.
Ti posto la macro:

Codice: Seleziona tutto
Sub NuovoListino()
Dim FOTDIGITALE, OBFOTOGRAFICO, SCHEDEMEMORIA As Long
Dim RP, ALTRO As Integer
RP = Range("B" & Rows.Count).End(xlUp).Row
FOTDIGITALE = 10 / 100
OBFOTOGRAFICO = 7 / 100
SCHEDEMEMORIA = 8 / 100
ALTRO = 1
Col = 14  '<<< corrisponde alla colonna "N"
For i = 1 To RP
    If UCase(Range("B" & i).Value) = "Fotocamera digitale" Then
        Cells(i, Col).Value = Range("H" & i).Value * (1 + FOTDIGITALE)
        GoTo salta
    End If
    If UCase(Range("B" & i).Value) = "Obiettivo Fotografico" Then
        Cells(i, Col).Value = Range("H" & i).Value * (1 + OBFOTOGRAFICO)
        GoTo salta
    End If
    If UCase(Range("B" & i).Value) = "Schede memoria" Then
        Cells(i, Col).Value = Range("H" & i).Value * (1 + SCHEDEMEMORIA)
        GoTo salta
    End If
    Cells(i, Col).Value = Range("H" & i).Value * (1 + (ALTRO / 100))
salta:
Next i
End Sub


Praticamente non mi riconosce i campi "Fotocamera digitale", "Obiettivo Fotografico" e "Schede memoria" (case sensitive); di conseguenza mi imposta la percentuale di ricarico (1%) come appartenente alla categoria "ALTRO".
Sbaglio qualcosa nell'indicare le categorie? :-?
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi Flash30005 » 01/02/10 16:07

E' normale che succeda questo
ho messo la funzione Ucase(valore cella) per avere tutto ciò che è scritto nella cella in lettere maiuscole,
proprio per evitare che nel listino possano esserci casi tipo:
1) Fotocamera digitale
oppure
2) Fotocamera Digitale
se nella macro indicherai una di queste due stringhe l'altra verrebbe esclusa perché non uguale
Ucase invece trasforma in maiuscolo la stringa quindi i due casi precedenti verrebbero interpretati come
FOTOCAMERA DIGITALE
quindi nella macro dovrai inserire la stringa in maiuscolo, così
Codice: Seleziona tutto
    If UCase(Range("B" & i).Value) = "FOTOCAMERA DIGITALE" Then
        Cells(i, Col).Value = Range("H" & i).Value * (1 + FOTDIGITALE)
        GoTo salta
    End If


Un'altra cosa la variabile ALTRO:
ALTRO = 1
azzerela così
ALTRO = 0 (come nella mia seconda macro)
altrimenti incrementerà tutti i valori (diversi dalle stringe precedenti) dell'1%

Fai sapere
Ciao

P.s. Ma scusa, non mi dire che le fotocamere stanno aumentando del 10% ? :eeh:
proprio ora che ero intenzionato ad acquistare "un'ammiraglia" professionale :cry:
:) :)
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: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi hispanico87 » 01/02/10 16:44

Grazie mille...ora è tutto ok anche se, aggiungendo il codice "definitivo" alla mia mega-macro, Excel non esegue queste ultime istruzioni. Ho bisogno di farlo a parte...qualche suggerimento sul perché?

Flash30005 ha scritto:P.s. Ma scusa, non mi dire che le fotocamere stanno aumentando del 10% ? :eeh:
proprio ora che ero intenzionato ad acquistare "un'ammiraglia" professionale :cry:
:) :)


Tranquillo le fotocamere non aumenteno! Il prezzo è quello del mio fornitore e le percentuali sono semplicemente "esempi" di ricarico del venditore al dettaglio!
hispanico87
Utente Junior
 
Post: 13
Iscritto il: 31/01/10 20:16

Re: [Excel] Aumentare un'intera colonna di una percentuale data

Postdi Flash30005 » 02/02/10 00:00

hispanico87 ha scritto:...ora è tutto ok anche se, aggiungendo il codice "definitivo" alla mia mega-macro, Excel non esegue queste ultime istruzioni. Ho bisogno di farlo a parte...qualche suggerimento sul perché?


Scusami ma non ho capito cosa è questo codice "definitivo",
dove lo inserisci e
cosa dovrebbe fare la macro
se intendi che hai una tua macro alla quale vuoi fargli eseguire anche l'intero codice della macro trattata in questo post è sufficiente aggiungere la chiamata a questa seconda macro prima dell' "End Sub" es:
Codice: Seleziona tutto
Sub TuaMacro()
... <<<<< righe di codice tua macro
...
... <<<< ultima riga di codice della tua macro prima dell'End Sub

Call NuovoListino  '<<<< chiamata alla macro aggiunta
End Sub


Fai sapere
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-

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel] Aumentare un'intera colonna di una percentuale data":


Chi c’è in linea

Visitano il forum: Nessuno e 79 ospiti