View Full Version : excel "sostituzione dati"
Lord Amarant
16-03-2009, 13:56
ragazzi ho il seguente problema.
in azienda per farci paghare dai clienti abbiamo delle quote in base al volume d'affari.
del genere meno di 1000€ un tot, da 1000 a 1500 un altro tot e cosi via discorrendo.
come posso fare in modo da fare il processo in automatico?
una tabellina di conversione tipo
<1000=50
>1000,<1500=150
ecc...
perchè a farla con la formula se mi esce un papiro.
mi consigliavano di usare i pivot ma non sò come potrebberò tornarmi utili?
grazie a tutti
bisognerebbe sapere quante possibilità ci sono
se meno di 7 potresti cavartela con un banale if!
Lord Amarant
17-03-2009, 07:46
putroppo sono 13 scaglioni:muro:
john_revelator
17-03-2009, 09:07
putroppo sono 13 scaglioni:muro:
Ti crei una funzioncina ad hoc.
Esempio
Function intervallo(cell As Range)
valore = cell.Value
Select Case valore
Case 1 To 10
intervallo = 1
Case 11 To 30
intervallo = 2
Case Else
intervallo = 3
End Select
End Function
e poi la richiami come una funzione nativa così
=intervallo(a1)
:)
Lord Amarant
17-03-2009, 13:58
ok quindi con l'editor vb creo la formula che mi ha detto.
basta che sostituisco 1 to 10 ecc... con i miei intervalli.
l'ultimo mio caso per esempio l'intervallo deve andare da 1000000 a infinito.
come lo escplico?
grazie mille:D
john_revelator
17-03-2009, 14:11
case is > 1000000 ;)
E' molto più semplice di quanto sembri e non è necessario ricorrere al VBA.
A1=0
A2=1000
A3=1500
A4=2000
A5=2200
ecc.
B1=50
B2=75
B3=150
B4=200
B5=300
ecc.
se supponiamo che ad un volume d'affari:
da 0 a 999 corrisponda 50
da 1000 a 1499 corriponda 75
da 1500 a 1999 corrisponda 150
....
oltre 2200 corrisponda 300
se i valori dei volumi d'affari sono in colonna C a partire da C1, in D1 devi scrivere:
=CERCA.VERT(C1;$A$1:$B$14;2)
ed eventualmente trascinare in basso.
E' indispensabile che i valori in colonna A siano in ordine crescente.
Ciao
E' molto più semplice di quanto sembri e non è necessario ricorrere al VBA.
A1=0
A2=1000
A3=1500
A4=2000
A5=2200
ecc.
B1=50
B2=75
B3=150
B4=200
B5=300
ecc.
se supponiamo che ad un volume d'affari:
da 0 a 999 corrisponda 50
da 1000 a 1499 corriponda 75
da 1500 a 1999 corrisponda 150
....
oltre 2200 corrisponda 300
se i valori dei volumi d'affari sono in colonna C a partire da C1, in D1 devi scrivere:
=CERCA.VERT(C1;$A$1:$B$14;2)
ed eventualmente trascinare in basso.
E' indispensabile che i valori in colonna A siano in ordine crescente.
Ciao
uhm interessante...eliminando la variabile falso ti prende il + vicino...
quoto la funzione di john (come al solito :D) anche se nn trovo necessario specificare l'ultimo case come > di qualcosa....a partire dal numero dopo il penultimo caso va a finire tutto nell'ELSE specificato appunto nell'ultimo ;)
john_revelator
18-03-2009, 08:47
quoto la funzione di john (come al solito :D) anche se nn trovo necessario specificare l'ultimo case come > di qualcosa....a partire dal numero dopo il penultimo caso va a finire tutto nell'ELSE specificato appunto nell'ultimo ;)
Per dargli una risposta più precisa occorrerebbe sapere esattamente quali sono i possibili valori inseribili. Gli ho messo il case > perchè altrimenti nell'else potrebbero rientrare magari anche valori negativi o non contemplati tra le altre scelte. Quindi può darsi che non serva come potrebbero essere necessari un case > e anche un case else per tutti gli altri casi. :)
Lord Amarant
26-03-2009, 09:00
scusate ma mi sono preso l'influenza e non sono riuscito a collegare.
grazie mille per le risposte.
io ho inserito questa funzione
Function pierpa(cell As Range)
valore = cell.Value
Select Case valore
Case 0 To 7000
pierpa = 107.8
Case 7001 To 12000
pierpa = 157.08
Case 12001 To 20000
pierpa = 190
Case 20001 To 35000
pierpa = 250
Case 35001 To 50000
pierpa = 347.08
Case 50001 To 100000
pierpa = 435
Case 100001 To 180000
pierpa = 535
Case 180001 To 250000
pierpa = 695
Case 250001 To 360000
pierpa = 855
Case 360001 To 430000
pierpa = 1075
Case 430001 To 500000
pierpa = 1180
Case 500001 To 1000000
pierpa = 1360
Case Is > 1000000
pierpa = 1541.67
End Select
End Function
unico problema che se c'è anche del testo per l'ultimo caso me lo valorizza lo stesso.
ma non è un problema visto che è una colonna tutto numero.
grazie mille
metti almeno questo
Function pierpa(cell As Range)
dim valore as integer
valore = cell.Value
Select Case valore
almeno ti va in errore ma nn mette valori che potrebbero alterare altri calcoli :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.