Condividi:        

formula per calcolo spese di consegna

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

formula per calcolo spese di consegna

Postdi gokuale » 08/02/12 16:53

Salve a tutti,
scusate se l'argomento e' gia stato trattato ma non sapevo come cercarlo.

Dunque ho questa necessita':

in due fogli excel ma nello stesso file (potrei anche dividerli) ho questa situazione:

foglio 1 - colonna A con codice vettore, colonna B con peso merce
foglio 2 - colonna A con codice fornitore, colonna B con spesa consegna, colonna C peso min., colonna D peso Max.

ora nel foglio 1 vorrei che per ogni particolare fornitore se il peso della spedizione e' nel range tra min e max allora mi scriva il costo spedizione

consideriamo che nel foglio 2 per ogni vettore con medesimo codice ho 10-15 righe dove cambia solo prezzo e range min. - max.

non saprei come fare perche' nel tempo sicuramente la tabella dei costi progressivamente potra' aumentare di righe all'aggiunta di nuovi vetttori

se qualcuno ha idee in merito
grazie
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Sponsor
 

Re: formula per calcolo spese di consegna

Postdi ricky53 » 08/02/12 17:03

Ciao,
prima di tutto benvenuto nel nostro forum.

Puoi fare degli esempi con dati e numeri, specificando anche il caso di stesso vettore con più costi e min-max
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: formula per calcolo spese di consegna

Postdi Anthony47 » 08/02/12 23:17

Ciao gokuale, benvenuto anche da parte mia.
Forse e' meglio se pubblichi un esempio lavorabile di Foglio1 e Foglio2; per come fare vedi qui: viewtopic.php?f=26&t=80395
Prima di postare un link in chiaro dovrai aver scritto 3 messaggi; quindi o scrivi "in codice" il link (es mettendo degli spazi prima dei caratteri "punto", es www . rapidshare . com/linkMio) oppure scrivi qualche messaggio di circostanza solo per fare numero.

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

Re: formula per calcolo spese di consegna

Postdi ricky53 » 09/02/12 00:42

Ciao,
però, per lasciare traccia futura, è bene che tu scriva anche i dati e le celle nel forum cercando di essere il più chiaro possibile.
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: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 07:48

Prima di tutto grazie a tutti per le risposte

per postare un file simile no problem ve lo preparo in giornata e ve lo mando
va bene anche condividere file con googledoc mi verrebbe moooolto piu comodo

per ora vi ringrazio
appena ho uil file pronto prima cerco di spiegarvelo bene e poi posto il link cosi' accio 4 post e non dovrebbe darmi problemi per il num. di post

ciao
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 07:58

ok allora facio degli esempi pratici

foglio 1 (DATI DOCUMENTI):

VETTORE PESO_LORDO VALORE_SPEDIZIONE
002039 25
002039 60
002039 25
002091 1
002039 1
002091 1,5
002091 1
002039 36
002091 7
002039 1
002091 1
002091 2
002039 20
002090 10
002090 2,5
002090 4
002090 4
002039 4
002090 2
002039 1
002090 3

foglio 2 (VETTORI):

VETTORE PREZZO MIN MAX
002039 € 6,00 0 5
002039 € 8,00 5,01 10
002039 € 10,00 10,01 20
002039 € 14,00 20,01 50
002039 € 19,00 50,01 100
002090 € 7,00 0 5
002090 € 8,00 5,01 10
002090 € 9,50 10,01 20
002090 € 15,00 20,01 60
002091 € 5,50 0 5
002091 € 7,00 5,01 10
002091 € 9,00 10,01 20
002091 € 11,00 20,01 50
002091 € 14,00 50,01 100
002015 € 16,00 0 100
002098 € 12,50 0 100
002098 € 25,00 100,01 200
002098 € 37,50 200,01 300
002098 € 50,00 300,01 400
002098 € 62,50 400,01 500
002098 € 75,00 500,01 600
002098 € 87,50 600,01 700
002098 € 100,00 700,01 800
002098 € 112,50 800,01 900
002098 € 125,00 900,01 1000
002098 € 137,50 1000,01 1100
002039 € 38,00 100,01 200
002039 € 57,00 200,01 300
002039 € 76,00 300,01 400
002039 € 95,00 400,01 500
002039 € 104,00 500,01 600
002039 € 123,00 600,01 700
002039 € 142,00 700,01 800
002039 € 161,00 800,01 900
002039 € 180,00 900,01 1000
002039 € 199,00 1000,01 1100


ok ora devo inserire nel foglio 1 il costo spedizione che c'e' nel foglio 2 in base al peso lordo di foglio 1 se questo e' nel range di foglio 2 e se il vettore e' lo stesso

spero di essere stato abbastanza preciso, i dati sopra riportati hanno l'esempio di stesso vettore con fasce diverse

grazie a tutti
ciaoooo
:D :D :D :D :D :D :D :D

io comunque ci continuo a provare se mi si illumina la lampadina di posto la soluzione

riciao

appena ho la conferma per googledoc se va bene vi sharo un file di esempio ma se volete potete anche fare copia incolla delle celle sopra riportate

bye

:D :D :D :D
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 08:09

usando spesso i db mi viene da pensare che dovrei fare una query del tipo

select * from foglio 2 where foglio1.vettori = foglio2.vettori and foglio 1.peso_lordo > foglio2.min and foglio1.peso_lordo < foglio2.max

ma come posso fare query in excel tra piu fogli

nel caso posso anche dividere i fogli in piu file di excel ma in quel caso sono costretto ad aprire prima il file con la tabella vettori e pesimin mex e poi quella dove voglio i valori o non fa niente e apro solo l'ultima

grazie mille a tutti

attendo la risposta per googledoc thanks
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi Flash30005 » 09/02/12 08:18

Ciao Gokuale e benvenuto nel Forum anche da parte mia

Prova questa macro
Codice: Seleziona tutto
Sub CompilaDati()
Set WS1 = Worksheets("DATI DOCUMENTI")
Set WS2 = Worksheets("VETTORI")
UR1 = WS1.Range("A" & Rows.Count).End(xlUp).Row
UR2 = WS2.Range("A" & Rows.Count).End(xlUp).Row
For RR1 = 2 To UR1
    VV1 = WS1.Range("A" & RR1).Value
    VP1 = WS1.Range("B" & RR1).Value
    For RR2 = 2 To UR2
    VV2 = WS2.Range("A" & RR2).Value
    VPMin = WS2.Range("C" & RR2).Value
    VPMax = WS2.Range("D" & RR2).Value
    If VV1 = VV2 And VP1 >= VPMin And VP1 <= VPMax Then
    WS1.Range("C" & RR1).Value = VP1 * WS2.Range("B" & RR2).Value
    GoTo SaltaRR1
    End If
    Next RR2
SaltaRR1:
Next RR1
End Sub


E 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: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 08:23

:oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:

scusate l'ignoranza ma non ho mai fatto macro in vita mia da dove le aggiungo ho excel 2010
grazie e scusate ancora
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi Flash30005 » 09/02/12 08:25

Il mio post precedente si riferisce al tuo messaggio delle ore 7:58 e alla soluzione in excel

allego il file Download


Ciao


EDIT: Il file allegato funziona anche con excel 2010 ma devi abilitare le macro altrimenti non verrà compilata la tabella nel foglio 1
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: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 08:31

intanto grazie mille per la risposta ma c'e' qualcosa che non mi torna

la riga 2 del foglio DATI SPEDIZIONI riporta un valore di spedizione di 1140 eurozzi mentre se guardiamo il valore nella tabella VETTORI dovrebbe portarmi solo la riga 6 cioe' 19 euro

grazie
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 08:32

il prezzo 19 euro non e' a kg ma totale della spedizione

grazie
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 08:33

inoltre non c'e' modo di fargli trovare il valore senza usare macro ma solo con formule di excel ????
thanks
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi Flash30005 » 09/02/12 08:44

Ah ok
sostituisci questa riga da così:
Codice: Seleziona tutto
    WS1.Range("C" & RR1).Value = VP1 * WS2.Range("B" & RR2).Value

a così
Codice: Seleziona tutto
    WS1.Range("C" & RR1).Value = WS2.Range("B" & RR2).Value

In pratica elimini la moltiplicazione (VP1 * ...)

[http://uploading.com/files/52bmc69m/CompilaTabPrezzoQuantit%25C3%25A0.xls/]Allego il file[/url]

Ciao

P.s. Si sarebbe possibile anche con le formule ma preferisco le macro :D
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: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 08:52

ok perfetto funziona tutto alla perfezione

ti chiedevo se era possibile con formule perche' il file e' aziendale e ci dobbiamo mettere mano in parecchi e magari con una formula in celle protette da scrittura mi vien meglio che un tasto da premere ma non cambia molto

grazie mille per ora - se per caso avete tempo di farmela a formula vi ringrazio
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 09:03

un'ultima cosa

avendo la necessita' di sbiancare il campo valore spedizione tutte le volte prima che lui ricalcoli i valori e' corretto aggiungere

For RR1 = 2 To UR1
WS1.Range("C" & RR1).Value = ""
VV1 = WS1.Range("A" & RR1).Value

all'interno della macro (campo in grassetto) o c'e' una funzione migliore
volevo sbiancare la colonna perche' se per caso il dato di quella riga mi varia in un valore fuori dal range di valore spedizione mi torna utile avere la cella bianca cosi' da gestirmi gli errori

grazie
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi Flash30005 » 09/02/12 09:15

Suppongo che il foglio dove intervenite sia il foglio "Dati documenti"

Prova ad inserire i dati su questo file

Ho aggiunto anche la pulizia della colonna
con questo codice prima del ciclo For... next
Codice: Seleziona tutto
If UR1 < 2 Then UR1 = 2
Ws1.Range("C2:C" & UR1).ClearContents
For RR1 = 2 To UR1   '<<<<<<<<<<<< esistente


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: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 09:27

M I T I C O

e' perfetto

un'ultima cosa, visto che il tutto devo adattarlo ad un file gia esistente per il nome dei fogli no problem mentre per i range si colonne ho visto che hai usato "B" oppure "A" ecc. ecc.

posso mettere invece di "B" il valore [VETTORE] cioe' il nome della colonna questo poiche' nel tempo potrebbe essere necessario modificare delle query (i dati nel foglio 1 li prende con degli sql da un database) e di conseguenza le colonne possono aumentare con il rischio di sfasare la macro

grazie mille e' spettacolare comunque proprio quello che cercavo

:lol: :lol: :lol: :lol: :lol: :lol: :lol: :lol:
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi gokuale » 09/02/12 10:19

ciao sto cercando di adattarlo al mio file ma mi da errore in apertura

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
UR = Range("B" & Rows.Count).End(xlUp).Row
If UR < 2 Then UR = 2
CheckArea = "A2:B" & UR
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
If Target <> "" And Target.Column = 1 And Cells(Target.Row, 2) <> "" Then Call CompilaDati
If Target <> "" And Target.Column = 2 And Cells(Target.Row, 1) <> "" Then Call CompilaDati
'If Target.Column = 1 And Cells(Target.Row, 2) <> "" Then Call CompilaDati
'If Target.Column = 2 And Cells(Target.Row, 1) <> "" Then Call CompilaDati
End If
End Sub


mi da errore in

Codice: Seleziona tutto
If Target <> "" And Target.Column = 1 And Cells(Target.Row, 2) <> "" Then Call CompilaDati


questo e' il mio modificato
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
UR = Range("M" & Rows.Count).End(xlUp).Row
If UR < 2 Then UR = 2
CheckArea = "N2:N" & UR
If Not Application.Intersect(Target, Range(CheckArea)) Is Nothing Then
If Target <> "" And Target.Column = 1 And Cells(Target.Row, 2) <> "" Then Call CompilaDati
If Target <> "" And Target.Column = 2 And Cells(Target.Row, 1) <> "" Then Call CompilaDati
'If Target.Column = 1 And Cells(Target.Row, 2) <> "" Then Call CompilaDati
'If Target.Column = 2 And Cells(Target.Row, 1) <> "" Then Call CompilaDati
End If
End Sub


come mai ????
gokuale
Utente Junior
 
Post: 17
Iscritto il: 08/02/12 16:47

Re: formula per calcolo spese di consegna

Postdi Flash30005 » 09/02/12 11:45

Ho modificato la macro per cercare la colonna con intestazione "VETTORE" sia sul foglio 1 che sul foglio2
pertanto sostituisci la macro che è nel modulo con questa
Codice: Seleziona tutto
Sub CompilaDati()
Set Ws1 = Worksheets("DATI DOCUMENTI")
Set Ws2 = Worksheets("VETTORI")
For CC1 = 1 To Ws1.UsedRange.Columns.Count
If Ws1.Cells(1, CC1).Value = "VETTORE" Then
Col1 = CC1
GoTo saltaCC1
End If
Next CC1
saltaCC1:
For CC2 = 1 To Ws2.UsedRange.Columns.Count
If Ws2.Cells(1, CC2).Value = "VETTORE" Then
Col2 = CC2
GoTo saltaCC2
End If
Next CC2
saltaCC2:

UR1 = Ws1.Cells(Rows.Count, Col1).End(xlUp).Row
UR2 = Ws2.Cells(Rows.Count, Col2).End(xlUp).Row

If UR1 < 2 Then UR1 = 2
Application.EnableEvents = False
Ws1.Range(Cells(2, Col1 + 2), Cells(UR1, Col1 + 2)).ClearContents
Application.EnableEvents = True
For RR1 = 2 To UR1
    VV1 = Ws1.Cells(RR1, Col1).Value
    VP1 = Ws1.Cells(RR1, Col1 + 1).Value
    For RR2 = 2 To UR2
    VV2 = Ws2.Cells(RR2, Col2).Value
    VPMin = Ws2.Cells(RR2, Col2 + 2).Value
    VPMax = Ws2.Cells(RR2, Col2 + 3).Value
    If VV1 = VV2 And VP1 >= VPMin And VP1 <= VPMax Then
    Application.EnableEvents = False
    Ws1.Cells(RR1, Col1 + 2).Value = Ws2.Cells(RR2, Col2 + 1).Value
    Application.EnableEvents = True
    GoTo SaltaRR1
    End If
    Next RR2
SaltaRR1:
Next RR1
End Sub



Inoltre sostituisci la macro del foglio "Dati Documenti" (dove ti dà errore) con questa
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
For CC1 = 1 To UsedRange.Columns.Count
If Cells(1, CC1).Value = "VETTORE" Then
Col1 = CC1
GoTo saltaCC1
End If
Next CC1
saltaCC1:
UR = Cells(Rows.Count, Col1).End(xlUp).Row
If UR < 2 Then UR = 2
If Not Application.Intersect(Target, Range(Cells(2, Col1), Cells(UR, Col1 + 1))) Is Nothing Then
On Error Resume Next
If Target <> "" And Target.Column = Col1 And Cells(Target.Row, Col1 + 1) <> "" Then Call CompilaDati
If Target <> "" And Target.Column = Col1 + 1 And Cells(Target.Row, Col1) <> "" Then Call CompilaDati
On Error GoTo 0
End If
End Sub

Salva il file con nome diverso

Puoi spostare la colonna con intestazione "VETTORE" ma le colonne a destra (Peso_Lordo in "Dati" e Prezzo, Min e Max in "Vettori") devono rimanere inalterate come posizione rispetto alla colonna Vettore

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 "formula per calcolo spese di consegna":


Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti