|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
23-10-2014, 12.02.09 | #1 |
Newbie
Registrato: 23-10-2014
Messaggi: 6
|
calculate su condizione
A me servirebbe un codice per cui inserendo un numero di serie nelle celle della colonna c, partendo da c4, si vada a confrontare il contenuto della cella nella colonna R della stessa riga, in cui compare la "DATA di consegna", con la data odierna. Nel caso in cui la data (nellla colonna R) sia passata, mi si scateni una macro GIà impostata. Vorrei anche che il mio codice si fermi nel momento in cui nella mia colonna C non sia inserito nulla. Quindi il mio codice si dovrebbe scatenare nel momento in cui vado ad inserire uno ad uno il mio numero di serie e quindi la data da confrontare sarebbe risultato di una formula. Non so se mi sono spiegata sufficientemente! Se avessi omesso dei dettagli, vi prego di scrivermi. GRAZIE, gentilissimiiiiiii! il mio codice di base è questo, che dite? Private Sub Worksheet_calculate(ByVal Target As Range) Dim cella As Range For Each cella In Range("r4:r20") If cella.Value < Date Then Macro2 End If Next End Sub |
23-10-2014, 23.43.18 | #2 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: calculate su condizione
spiegati meglio.
sarebbe l'ideale allegare un file di esempio sostituendo i dati sensibili con dati a caso. Il codice postato è molto instabile, confrontare un valore cella con una data non è il massimo, a meno che non sia trattato preventivamente per verificarne il formato.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
24-10-2014, 09.29.50 | #3 |
Newbie
Registrato: 23-10-2014
Messaggi: 6
|
Rif: calculate su condizione
Per spiegarmi al meglio vorrei mettere un'immagine, ma non riesco-! :cry:
Provo a ricreare la mia tabella! Io ho una successione di date; normalmente la mia tabella si compila partendo dalla data di consegna cliente" e andando a ritroso sottraendo dei giorni (per semplificare facciamo 1) fino ad arrivare alla data collaudo. Data collaudo / Data x distension/taglio / Data approntamento gg / Data approntamento / Data Consegna Cliente / Nuova Consegna. Nel caso in cui però la mia "data consegna cliente" fosse passata rispetto a quella odierna, io parto dalla "data di collaudo" considerandola come quella odierna e compilo la tabella facendo il procedimento al contrario, andando quindi a sommare dei giorni fino alla data di approntamento, scavalcando la "data di consegna cliente,da cui siamo partiti,e trovando una NUOVA CONSEGNA CLIENTE. Quindi: 1. in una cella cella colonna "C", partendo dalla "C4" io scrivo un numero 2. automaticamente se in "C.." è contenuto un dato controllare se la data contenuta nella cella della stessa riga ma della colonna "R" è minore della data odierna 3. se è verificata la condizione descritta in "2." eseguire la macro di nome "Macro1" Sono stata più chiara!? Il codice da me utilizzato sarebbe: Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells.Count = 1 And Target(1) <> "" And Not Intersect(Target, Range("C4:C20")) Is Nothing Then If IsDate(Range("R" & Target.Row)) Then If Range("R" & Target.Row) < Date Then Call pippo End If End If End Sub Può sembrarti idoneo? GRAZIE |
24-10-2014, 09.40.23 | #4 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: calculate su condizione
In una finestra di debug, acquisici i valori di:
Target(1) Intersect(Target, Range("C4:C20")) Range("R" & Target.Row) Date Sono coerenti con quello che ti aspetteresti ? Presta attenzione a quanto detto qui: "confrontare un valore cella con una data non è il massimo, a meno che non sia trattato preventivamente per verificarne il formato."
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
24-10-2014, 10.21.39 | #5 |
Newbie
Registrato: 23-10-2014
Messaggi: 6
|
Rif: calculate su condizione
Non ho capito cosa intendi con la prima domanda.
Quello che dovrei confrontare è una cella contentente una data con la data odierna. quindi dovrebbe funzionare, no?! |
24-10-2014, 10.39.46 | #6 | |
Gold Member
WT Expert
Registrato: 23-06-2004
Loc.: Cagliari
Messaggi: 13.333
|
Rif: calculate su condizione
Quota:
Dato che il valore nella cella viene inserito in maniera arbitraria, è facile che possano generarsi degli errori, per cui sarebbe meglio verificare che il contenuto della cella sia una data corretta prima di procedere. Potresti usare anche la formattazione condizionale per evidenziare una cella in cui il valore inserito non sia una data corretta, così da notarlo con maggiore facilità. Con la prima domanda intendeva che, utilizzando le funzionalità di debug, dovresti riuscire a capire quale sia il dato che non ha il valore che ti aspetti, e quindi indagare su quello.
___________________________________
La risposta è dentro di te... e però, è sbagliata! |
|
24-10-2014, 11.56.42 | #7 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: calculate su condizione
Esattamente.
I valori restituiti sono messi in relazione tra loro secondo una logica dettata da condizioni e comparazioni... Se entrambe vengono rispettate, allora il codice funziona; "Potrebbe" mancare solo l'ottimizzazione che non preclude al risultato finale.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
24-10-2014, 12.03.56 | #8 | |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: calculate su condizione
Quota:
Molto schematica.
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
|
24-10-2014, 12.06.46 | #9 |
Newbie
Registrato: 23-10-2014
Messaggi: 6
|
Rif: calculate su condizione
Il mio codice FUNZIONA!! evviva!! In realtà la data è pescata da un altro foglio excel quindi diciamo che il formato è controllato. Ora mim servirebbe un altro aiuto, se avete voglia!
Il mio codice corretto è: Private Sub Worksheet_Change(ByVal Target As Range) Dim I As Integer If Target.Cells.Count = 1 And Target(1) <> "" And Not Intersect(Target, Range("C4:C20")) Is Nothing Then If IsDate(Range("R" & Target.Row)) Then If Range("R" & Target.Row) < Date Then I = ActiveCell.Row Call pippo(I) End If End If End If End Sub Mi servirebbe una Macro tale per cui SULLA STESSA RIGA della cella attiva, mi compili le celle nelle colonne n,o ,p ,q secondo una formula. prima dichiaro i come parametro! La mia i che varia sarebbe il numero delle righe! Userei RANGE ("i & n ") dove i è la riga della mia cella attiva ela n è la colonna da considerare. Copio da excel la formula per ogni cella. Non so se sono stata sufficientemente chiara... |
24-10-2014, 14.13.22 | #10 |
Gold Member
WT Expert
Registrato: 09-01-2002
Loc.: None of your business
Messaggi: 5.505
|
Rif: calculate su condizione
Così fai quel che vuoi:
Codice:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Ctrl+G per la finestra debug Debug.Print "Riga: "; Target.Cells.Row, "Colonna:"; Target.Cells.Column Debug.Print "Cella:"; Target.Address Target.Formula = "=" & Target.Address End Sub
___________________________________
Practice feeds Skill,Skill limits Failure,Failure enhances Security,Security needs Practice |
24-10-2014, 23.58.29 | #11 | |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: calculate su condizione
Quota:
supponiamo di scrivere in C6 col 1° IF fai un controllo nel 2° IF si verifica che la cella R6 sia una data nel 3° IF verifichi che il valore nella cella R6 sia minore della data odierna e se lo è poni la variabile I uguale al valore della riga della cella attiva e passi il valore di I ad una macro Però .... quando hai digitato la data in C6 e schiacci Invio la cella attiva diventa la n° 7 e passi quel valore alla macro. è corretto questo? tu hai il file sotto mano, magari per te è semplice, ma io non capisco cosa devi fare.
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
|
25-10-2014, 00.09.06 | #12 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: calculate su condizione
vedo che il problema lo hai postato su altri 3 forum
io non sono contraria al cross-posting ma almeno fornisci delle informazioni più dettagliate anche quì almeno uno capisce quello che cerchi. ti pare?
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
27-10-2014, 08.40.15 | #13 |
Newbie
Registrato: 23-10-2014
Messaggi: 6
|
Rif: calculate su condizione
Come faccio a postare un'immagine o il file excel? cosi almeno riesco a spiegarmi meglio....
|
27-10-2014, 22.00.32 | #14 |
Senior Member
WT Expert
Registrato: 19-05-2007
Loc.: Verona
Messaggi: 1.302
|
Rif: calculate su condizione
è semplice, se scorri il box quando rispondi alla discussione vedi anche il campo per allegare il file, oppure lo uppi su qualche host e posti il suo link
___________________________________
- Il primo fondamento della sicurezza non e' la tecnologia, ma l'attitudine mentale - |
28-10-2014, 10.19.28 | #15 |
Newbie
Registrato: 23-10-2014
Messaggi: 6
|
Rif: calculate su condizione
trovato il modo per fare il link! http://www.filedropper.com/esempiofoglio.
Spero riusciate a vederlo. Provo a rispiegare la mia macro: "partendo dalla cella attiva della colonna R (nel mio caso R4), mi sposto nella colonna N della stessa riga ( potrei usare Range("N" & I)), dove inserisco la data odierna. Mi sposto poi nella colonna O inserendo la formula "=SE($H4="distensione";$P4-$B$2;SE($H4="Taglio a 1/2";$P4-$C$2;SE($H4="distensione+Taglio";$P4-$D$2;$P4+0)))"; Nella COLONNA P con la formula "=SE($U4="MORANDINI";SE(O(GIORNO.SETTIMANA($Q4)=6; GIORNO.SETTIMANA($Q4)=2);$Q4-4;SE(GIORNO.SETTIMANA($Q4)=3;$Q4-1;SE(O(GIORNO.SETTIMANA($Q4)=4;GIORNO.SETTIMANA($Q 4)=7);$Q4-2;SE(O(GIORNO.SETTIMANA($Q4)=5;GIORNO.SETTIMANA($Q 4)=1);$Q4-3;SE(GIORNO.SETTIMANA($Q4)=7;$Q4-1;SE(GIORNO.SETTIMANA($Q4)=1;$Q4-2))))));$Q4+0)"; nella COLONNA Q con la formula : "=$R4-CERCA.VERT($C4;$A:$AF;32;FALSO). Alla fine della macro La mia cella attiva è nella colonna R nella riga successiva a quella precedente." Grazie mille dei consigli!=) |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|
Discussioni simili | ||||
Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
Corso VBA | Alexsandra | Guide | 85 | 16-11-2016 11.11.51 |
Doppia condizione Excel | dafne984 | Office suite | 0 | 28-10-2011 12.00.49 |
30 giugno 08: la morte di Windows XP | Sbavi | News dal WEB | 110 | 22-06-2008 12.29.49 |
Politica & co.: full throttle! | Nothatkind | Chiacchiere in libertà | 1912 | 13-01-2006 00.28.09 |