Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

calcolo scaglioni progressivi

664 views
Skip to first unread message

alessio

unread,
Mar 6, 2009, 5:50:27 PM3/6/09
to
non riesco a creare un foglio nel quale (senza macro) posto un valore di ore
lavorate da una macchina si sviluppi una tabella di costi per la quale
il tempo lavorato da 0 a 20 ore venga moltiplicato per un coefficente A
il tempo lavorato da 21 a 35 ore venga moltiplicato per un coefficiente B
il tempo lavorato da 36 a 50 ore venga moltiplicato per un coefficiente C
il tempo lavorato da 51 ore in poi venga moltiplicato per un coefficiente D

Ho provato a creare una formula "SE" ma non ci sono riuscito

Chiaramente io parto con i seguenti dai
- Ore lavorate dalla macchina
- Coefficienti A B C e D

Avrei bisogno di ottenere i 4 risultati singoli e una cella con una formula
complessiva

Ci ho provato ma ....
Alex
grazie


IvanDaBologna

unread,
Mar 7, 2009, 3:56:50 AM3/7/09
to
alessio ha scritto:
Con una formula in F2

=SE(A2<21;A2*B2;SE(A2<36;A2*C2;SE(A2<51;A2*D2;A2*E2)))

avendo in A2 le ore lavorate, B2 il coeff A, C2 coeff B, D2 coeff C, E2
coeff D.
La adatti ai tuoi riferimenti ...
--
IvanDaBologna
-=-=-==--==-=-=-
sottOFFICEale - il mio blog
barbera del monferrato - il mio vino
carmen - la mia donna
non necessariamente nello stesso ordine

paoloard

unread,
Mar 6, 2009, 1:34:08 PM3/6/09
to

"alessio" <ales...@hotmail.com> ha scritto nel messaggio
news:TMhsl.190702$Ca.3...@twister2.libero.it...

Ciao Alessio, non ho capito cosa significa 4 risultati singoli e una formula
complessiva, mi sembrano in antitesi (4 formule o una?).
Interpretando, per quanto riguarda la formula complessiva, una delle tante:
se:
Ore Coeff. Range Formula
50.00 0,10 0 15
0,20 21
0,30 36
0,40 51
La formula in D2: =$A$2*24*INDICE(B2:$B$5;CONFRONTA($A$2*24;$C$2:$C$5;1))
N.B.: in A2 il formato cella deve essere [h].mm e l'ora inserita in formato
ora (es. 50.00).
--
Fai sapere se e come hai risolto. Grazie

Ciao paoloard
http://riolab.org

paoloard

unread,
Mar 7, 2009, 4:27:30 AM3/7/09
to

"paoloard" <xxp...@alice.it> ha scritto nel messaggio
news:9E9E6EE0-D3A3-4F01...@microsoft.com...
>
cut

> Ciao Alessio, non ho capito cosa significa 4 risultati singoli e una
> formula complessiva, mi sembrano in antitesi (4 formule o una?).
> Interpretando, per quanto riguarda la formula complessiva, una delle
> tante:
> se:
> Ore Coeff. Range Formula
> 50.00 0,10 0 15
> 0,20 21
> 0,30 36
> 0,40 51
> La formula in D2: =$A$2*24*INDICE(B2:$B$5;CONFRONTA($A$2*24;$C$2:$C$5;1))
> N.B.: in A2 il formato cella deve essere [h].mm e l'ora inserita in
> formato ora (es. 50.00).
> --
> Fai sapere se e come hai risolto. Grazie
>
> Ciao paoloard
> http://riolab.org

Anche: =$A$2*24*(SCARTO($A$1;CONFRONTA($A$2*24;$C$2:$C$5;1);1))
--
Ciao paoloard
http://riolab.org

alessio

unread,
Mar 7, 2009, 7:41:51 AM3/7/09
to
Signori grazie dell'aiuto e della solerzia. In realtà , proprio oggi, mi
hanno cambiato le carte in tavola, non serve dire che sono più incasinato di
prima! E' anche cambiata la tabella oraria. Rispiego tutto e provo a farlo
meglio di quanto fatto in precedenza.

Ho due macchinari il cui lavoro devo necessariamente fatturare a orari di
impiego. Le macchine eseguono mansioni differenti e non lavorano
contemporaneamente. Quando finisce il suo compito la prima, parte la seconda
a completare l'opera. Il contratto sarebbe tale per cui più lavorano (in
totale) più costano in termini di tariffa oraria.

Il costo di impiego orario GLOBALE indicativo è nella tabella qui sotto:
da 0 a 40 ore 20 ¤
41 a 50 ore 34 ¤
51 a 65 ore 40 ¤
65 ore in poi 50 ¤

Poniamo, per esempio, che la prima macchina lavori 55 ore, poi interviene
anche la seconda che ne lavora altre 100 (i tempi di impiego della prima e
della seconda variano a seconda dei casi).

La domanda è: come faccio a conteggiare il costo (secondo i relativi
scaglioni) del lavoro della prima macchina per poi partire dallo scaglione
giusto per il costo di impiego della seconda?

devo presentare un prospetto nel quale deve apparire
1) il costo totale della prima macchina
2) gli scaglioni in termini di tempi che hanno contribuito a tale totale

3) il costo totale della seconda macchina da quando è intervenuta al posto
della prima
4) i dettagli dei costi (per scaglioni di tempi di impiego) che hanno
contribuito a tale totale.

Io, poi farò la somma e fatturerò.

Non ci penso nemmeno a risolvere da solo questa cosa!!!!
Al Vostro buon cuore
Alessio


Bruno Campanini

unread,
Mar 7, 2009, 9:03:08 AM3/7/09
to
"alessio" <ales...@hotmail.com> wrote in message
news:jYtsl.190880$Ca.3...@twister2.libero.it...

> Signori grazie dell'aiuto e della solerzia. In realtà , proprio oggi, mi
> hanno cambiato le carte in tavola, non serve dire che sono più incasinato
> di prima! E' anche cambiata la tabella oraria. Rispiego tutto e provo a
> farlo meglio di quanto fatto in precedenza.
>
> Ho due macchinari il cui lavoro devo necessariamente fatturare a orari di
> impiego. Le macchine eseguono mansioni differenti e non lavorano
> contemporaneamente. Quando finisce il suo compito la prima, parte la
> seconda a completare l'opera. Il contratto sarebbe tale per cui più
> lavorano (in totale) più costano in termini di tariffa oraria.
>
> Il costo di impiego orario GLOBALE indicativo è nella tabella qui sotto:
> da 0 a 40 ore 20 ¤
[...]

Il tempo minimo di tariffazione non sarà zero...
E 2:12 (due ore e dodici minuti) contano per 20 * 72/60?
Tariffazione uguale per ambedue le macchine?

Nell'esempio proposto (55 + 100) il totale fa 7240?

Bruno

Bruno Campanini

unread,
Mar 7, 2009, 9:28:35 AM3/7/09
to
"Bruno Campanini" <B...@gmail.com> wrote in message
news:Olnwp1yn...@TK2MSFTNGP02.phx.gbl...

Errata


> Nell'esempio proposto (55 + 100) il totale fa 7240?

Corrige
Nell'esempio proposto (55 + 100) il totale fa 6240?

Bruno

alessio

unread,
Mar 7, 2009, 9:50:58 AM3/7/09
to
Il tempo minimo non sarą mai 0

2 ore e 12 minuti .... beh ... sono 2 ore e 12/60 di un'ora quindi sono
20*132/60 (forse non ho capito la domanda).

Stessa tariffazione per entrambe le macchine

Nell'esempio esposto fa proprio 6240

i tempi sono indicativi (intendo 55 + 100) in quanto variabili a seconda del
tipo di lavoro.

Se posso completare, io parto dai segunati dati presenti nel foglio di
calcolo:
1) una tabella costo orario come quella scritta nel primo post
2) una casella con le ore della prima macchina
3) una casella con le ore della seconda macchina

Completerei con una struttura di caselle per i risultati come quella esposta
sempre nel primo post.

Ti ringrazio .. č un aiuto molto apprezzato.
Alessio


"Bruno Campanini" <B...@gmail.com> wrote in message

news:eclb4Dz...@TK2MSFTNGP03.phx.gbl...

alessio

unread,
Mar 7, 2009, 10:52:44 AM3/7/09
to
il tempo minimo di utilizzo non sarà mai 0 per la prima macchina per la
seconda meglio prevedere anche il non utilizzo quindi anche un tempo 0 se
capita.
ciao
Alessio

"Bruno Campanini" <B...@gmail.com> wrote in message

news:eclb4Dz...@TK2MSFTNGP03.phx.gbl...

Bruno Campanini

unread,
Mar 7, 2009, 4:46:42 PM3/7/09
to
"alessio" <ales...@hotmail.com> wrote in message
news:gLwsl.190946$Ca.3...@twister2.libero.it...

> il tempo minimo di utilizzo non sarà mai 0 per la prima macchina per la
> seconda meglio prevedere anche il non utilizzo quindi anche un tempo 0 se
> capita.
> ciao
> Alessio

Prova un po' questa:
===========================================
Public Sub Test()
Dim TT(1 To 4), T, i As Integer, k As Integer
Dim Tariffa(1 To 4), Costo(1 To 4), M(1 To 2) As String
Dim Totale, TargetRange(1 To 2) As Range, Startfrom As Integer
Dim A(1 To 3), Scelta As String, TTT(1 To 2)

' Definizioni
'-------------------------------------------------
Set TargetRange(1) = [Sheet7!AM13]
Set TargetRange(2) = TargetRange(1)(8)
Tariffa(1) = CDec(20): Tariffa(2) = CDec(34)
Tariffa(3) = CDec(40): Tariffa(4) = CDec(50)
A(1) = CDec(40): A(2) = CDec(10): A(3) = CDec(15)
'-------------------------------------------------

For i = 1 To 2
Do: Scelta = InputBox("Tempo di Macchina-" & _
i & " in HH.MM decimali")
If Scelta = "" Then Exit Sub
Loop Until IsNumeric(Scelta)
TTT(i) = CDec(Scelta)
M(i) = "M" & i
Next
k = 1: T = CDec(TTT(1))

Start_1:
If T >= A(1) Then
TT(1) = A(1): T = T - A(1): Costo(1) = Tariffa(1) * A(1)
Else
TT(1) = T: Costo(1) = Tariffa(1) * T: T = 0
Startfrom = 1: A(1) = A(1) - TT(1)
End If
Start_2:
If T >= A(2) Then
TT(2) = A(2): T = T - A(2): Costo(2) = Tariffa(2) * A(2)
Else
TT(2) = T: Costo(2) = Tariffa(2) * T: T = 0
Startfrom = 2: A(2) = A(2) - TT(2)
End If
Start_3:
If T >= A(3) Then
TT(3) = A(3): T = T - A(3): Costo(3) = Tariffa(3) * A(3)
Else
TT(3) = T: Costo(3) = Tariffa(3) * T: T = 0
Startfrom = 3: A(3) = A(3) - TT(3)
End If
Start_4:
If T > 0 Then
TT(4) = T: Costo(4) = Tariffa(4) * T
End If

For i = 1 To 4
If TT(i) > 0 Then
Totale = Totale + Costo(i)
TargetRange(k)(i, 1) = M(k)
TargetRange(k)(i, 2) = TT(i)
TargetRange(k)(i, 3) = Tariffa(i)
TargetRange(k)(i, 4) = Costo(i)
End If
Next

If k = 2 Then Exit Sub

k = 2: T = TTT(k): Totale = 0
For i = 1 To 4
TT(i) = 0: Costo(i) = 0
Next

Select Case Startfrom
Case 1: GoTo Start_1
Case 2: GoTo Start_2
Case 3: GoTo Start_3
Case Else: GoTo Start_4
End Select

End Sub
======================================

Bruno

Bruno Campanini

unread,
Mar 8, 2009, 3:46:11 AM3/8/09
to
"Bruno Campanini" <B...@gmail.com> wrote in message
news:OOeks42n...@TK2MSFTNGP02.phx.gbl...

> "alessio" <ales...@hotmail.com> wrote in message
> news:gLwsl.190946$Ca.3...@twister2.libero.it...
>> il tempo minimo di utilizzo non sarà mai 0 per la prima macchina per la
>> seconda meglio prevedere anche il non utilizzo quindi anche un tempo 0 se
>> capita.
>> ciao
>> Alessio
>
> Prova un po' questa:
> ===========================================
> Public Sub Test()
> Dim TT(1 To 4), T, i As Integer, k As Integer
[...]

O meglio, questa:
==============================================

Startfrom = 1: A(1) = A(1) - TT(1): GoTo AAA
End If

Start_2:
If T >= A(2) Then
TT(2) = A(2): T = T - A(2): Costo(2) = Tariffa(2) * A(2)
Else
TT(2) = T: Costo(2) = Tariffa(2) * T: T = 0

Startfrom = 2: A(2) = A(2) - TT(2): GoTo AAA
End If

Start_3:
If T >= A(3) Then
TT(3) = A(3): T = T - A(3): Costo(3) = Tariffa(3) * A(3)
Else
TT(3) = T: Costo(3) = Tariffa(3) * T: T = 0

Startfrom = 3: A(3) = A(3) - TT(3): GoTo AAA
End If

Start_4:
If T > 0 Then
TT(4) = T: Costo(4) = Tariffa(4) * T
End If

AAA:


For i = 1 To 4
If TT(i) > 0 Then
Totale = Totale + Costo(i)
TargetRange(k)(i, 1) = M(k)
TargetRange(k)(i, 2) = TT(i)
TargetRange(k)(i, 3) = Tariffa(i)
TargetRange(k)(i, 4) = Costo(i)
End If
Next

If k = 2 Then Exit Sub

k = 2: T = TTT(k): Totale = 0
For i = 1 To 4
TT(i) = 0: Costo(i) = 0
Next

Select Case Startfrom
Case 1: GoTo Start_1
Case 2: GoTo Start_2
Case 3: GoTo Start_3
Case Else: GoTo Start_4
End Select

End Sub
=====================================

Bruno

alessio

unread,
Mar 8, 2009, 5:11:53 AM3/8/09
to
ok ... come le provo?
Alessio

"Bruno Campanini" <B...@gmail.com> wrote in message

>> Prova un po' questa:
>> ===========================================
>> Public Sub Test()
>> Dim TT(1 To 4), T, i As Integer, k As Integer
> [...]
>

> O meglio, questa:............................................


fernando cinquegrani

unread,
Mar 9, 2009, 1:33:22 AM3/9/09
to

"alessio" <ales...@hotmail.com> ha scritto nel messaggio
news:mRvsl.190927$Ca.3...@twister2.libero.it...

> Se posso completare, io parto dai segunati dati presenti nel foglio di
> calcolo:
> 1) una tabella costo orario come quella scritta nel primo post
> 2) una casella con le ore della prima macchina
> 3) una casella con le ore della seconda macchina

vedi scaglioni3
http://www.prodomosua.eu/zips/scaglioni3.xls
(è un aggiornamento di scaglioni2 che
potevi già trovare su google groups).
.f


fernando cinquegrani

unread,
Mar 9, 2009, 5:59:04 AM3/9/09
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:%23wiMXiH...@TK2MSFTNGP05.phx.gbl...

dimenticavo:
i tempi devi inserirli in formato hh:mm
.f


Bruno Campanini

unread,
Mar 9, 2009, 6:48:52 AM3/9/09
to
"Bruno Campanini" <B...@gmail.com> wrote in message
news:eOY3rH8n...@TK2MSFTNGP05.phx.gbl...

Buona ta terza:
=============================================
Public Sub Test2()
Dim Sc() As Currency, Tar() As Currency
Dim numM As Integer, numSc As Integer, M() As String
Dim TargetRange As Range, T As Currency, TT() As Currency
Dim Scelta As String, sSc() As Currency
Dim i As Integer, j As Integer, k As Integer

' Definizioni
'--------------------------------
Set TargetRange = [Sheet7!AM13]
numM = 2 ' Numero Macchine
numSc = 3 ' Numero Scaglioni
'--------------------------------

ReDim Sc(1 To numSc)
ReDim sSc(1 To numSc + 1)
ReDim M(1 To numM)
ReDim Tar(1 To numSc + 1)
ReDim TT(1 To numM)

' Definizioni
'-------------------------------------------------------
' Definisce ampiezza Scaglioni Definisce Tariffa
Sc(1) = 40: Tar(1) = 20
Sc(2) = 10: Tar(2) = 34
Sc(3) = 15: Tar(3) = 40
Tar(4) = 50
'-------------------------------------------------------

For i = 1 To numM
Do
Scelta = InputBox("Tempo di Macchina-" & i & " in HH.MM decimali")


If Scelta = "" Then Exit Sub
Loop Until IsNumeric(Scelta)

TT(i) = CCur(Scelta)


M(i) = "M" & i
Next

For i = 1 To numM
T = TT(i)
For j = 1 To numSc
If T >= Sc(j) Then
sSc(j) = Sc(j)
T = T - Sc(j)
Sc(j) = 0
Else
sSc(j) = T
Sc(j) = Sc(j) - T
T = 0
End If
Next
If T > 0 Then
sSc(numSc + 1) = T
End If
Range(TargetRange(1 + (i - 1) * 7, 0), TargetRange(4 + (i - 1) * 7,
4)).ClearContents
For k = 1 To numSc + 1
If sSc(k) > 0 Then
TargetRange(k + (i - 1) * 7, 0) = "Sc-" & k
TargetRange(k + (i - 1) * 7, 1) = M(i)
TargetRange(k + (i - 1) * 7, 2) = sSc(k)
TargetRange(k + (i - 1) * 7, 3) = Tar(k)
TargetRange(k + (i - 1) * 7, 4) = sSc(k) * Tar(k)
End If
Next
Next

End Sub
====================================================

Bruno

0 new messages