Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

cerca data piu' vecchia

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

cerca data piu' vecchia

Postdi mpontic » 13/09/11 10:57

Ciao a tutti

avrei bisogno del vostro aiuto!!!
ho un file composto da 10 colonne tutte compilate. Mi serve fare un check su tre colonne (ovvero per le righe che soddisfano tre criteri specifici) ed estrarre da queste la data piu' vecchia.
Ad esempio
colonna a riporta nomi di citta'
colonna b riporta un colore
colonna c riporta un numero
colonna d riporta una data

Il dato che mi serve e' la data piu' vecchia per quelle righe che hanno colonna a "Roma", colonna b "Rosso", colonna c "7".
Spero di essere stato chiaro )))

Grazie come sempre
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Sponsor
 

Re: cerca data piu' vecchia

Postdi Flash30005 » 13/09/11 12:01

Tutto chiaro tranne dove vorresti questi dati

Ho pensato di inserire in
M1 la città da trovare (Roma)
N1 il colore (Rosso)
O1 il numero (7)

dopo l'esecuzione di questa macro avrai in P1 la data minore (più vecchia)

Codice: Seleziona tutto
Sub TrovaDataMinima()
UR = Range("A" & Rows.Count).End(xlUp).Row
Mdata = "12/12/2040"
For RR = 2 To UR
If UCase(Range("A" & RR).Value) = UCase(Range("M1").Value) And UCase(Range("B" & RR).Value) = UCase(Range("N1").Value) And Range("C" & RR).Value = Range("O1").Value Then
DataV = Range("D" & RR).Value
If Mdata > DataV Then Mdata = DataV
End If
Next RR
Range("P1").Value = Mdata
End Sub


Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: cerca data piu' vecchia

Postdi mpontic » 13/09/11 14:18

...ma invece di posizionare i valori da cercare nelle celle M1, N1 e O1 posso scrivere anche direttamente nella macro il valore da cercare? Chiedo perche si tratta di file dinamico che cambia ogni giorno e la ricerca va fatta su diverse "triplette".
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: cerca data piu' vecchia

Postdi Anthony47 » 13/09/11 14:54

Se vuoi farlo con formula:
-metti in M1-N1-O1 citta', colore e numero
-poi usi la formula
Codice: Seleziona tutto
=MIN(SE((A2:A1000=$M$1)*(B2:B1000=$N$1)*(C2:C1000=$O$1);D2:D1000;""))
da confermare con Contr-Maiusc-Enter

Se per qualche strano motivo trovi piu' vantaggioso mettere i valori in formula invece che nelle celle di appoggio, allora sostituisci $M$1 con "roma", $N$1 con "blu" e $O$1 con 7

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca data piu' vecchia

Postdi mpontic » 13/09/11 15:30

ciao Anthony

la soluzione con formula e' ottimale ma mi restituisce sempre zero come risultato :cry:
Dove sbaglio?
Ovviamente confermo la matrice con maiusc+ctrl+invio

grazie
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: cerca data piu' vecchia

Postdi Flash30005 » 13/09/11 19:38

:eeh:
Perdona ma, prima dici che non vorresti inserire le variabili nelle celle in quanto il file è dinamico (cambia ogni giorno)
poi, invece, risulta ottimale la soluzione con la formula che prevede sia l'inserimento delle variabili nelle celle (come macro) con una cella in più occupata dalla stessa formula :eeh:

Anche se non lo ritengo pratico ho inserito la tripletta nella macro
Magari la soluzione migliore sarebbe quella di creare una UserForm con i tre campi da inserire ogni volta e con Ok attivare la macro


Codice: Seleziona tutto
Sub TrovaDataMinima()
UR = Range("A" & Rows.Count).End(xlUp).Row
Citta = "ROMA"
Colore = "ROSSO"
Numero = 7
Mdata = "12/12/2040"
For RR = 2 To UR
If UCase(Range("A" & RR).Value) = Citta And UCase(Range("B" & RR).Value) = Colore And Range("C" & RR).Value = Numero Then
DataV = Range("D" & RR).Value
If Mdata > DataV Then Mdata = DataV
End If
Next RR
Range("P1").Value = Mdata
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: cerca data piu' vecchia

Postdi Anthony47 » 13/09/11 22:39

mi restituisce sempre zero come risultato :cry:
Dove sbaglio?
Per prova formatta come "numero con 2 decimali" il tuo elenco di date e dimmi che cosa leggi; poi con UnDo riporta come era prima.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca data piu' vecchia

Postdi mpontic » 14/09/11 08:00

Anthony leggo sempre la data nel formato gg/mm/aaaa anche con la formattazione a number con 2 decimali.
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: cerca data piu' vecchia

Postdi CANAPONE » 14/09/11 08:53

Ciao,

forse se aggiungi un'altra condizione alla formula, escludi le celle vuote della colonna D.


=MIN(SE((A2:A1000=$M$1)*(B2:B1000=$N$1)*(C2:C1000=$O$1)*(D2:D1000>0);D2:D1000;""))

Sempre da confermare con control+maiusc+invio

Tiro ad indovinare, non posso scaricare il file: spero sia d'aiuto.

Saluti a tutti
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8
CANAPONE
Utente Senior
 
Post: 425
Iscritto il: 22/11/10 15:43
Località: Firenze

Re: cerca data piu' vecchia

Postdi mpontic » 14/09/11 08:58

Ciao

non ci sono celle vuote in D...sono tutte date in formato DATA gg/mm/aaaa
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: cerca data piu' vecchia

Postdi Flash30005 » 14/09/11 09:26

Perdonami Mpontic
mi dici se l'ultima macro soddisfa la tua esigenza?

Penso che dopo aver dedicato del tempo per trovarti una soluzione (che tu l'adotti o no non ha importanza)
sapere che il tempo non è stato inutile è già una gratificazione, anche perché potrebbe essere utile ad altri utenti, non credi?
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: cerca data piu' vecchia

Postdi mpontic » 14/09/11 09:49

hai ragione Flash e scusami...le sto provando un po' tutte.

La macro ultima andrebbe bene come soluzione ma mi restituisce sempre 12/12/2040
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: cerca data piu' vecchia

Postdi Flash30005 » 14/09/11 11:32

Non può essere!
L'ho testata di nuovo e funziona bene
allora... Tre sono le possibili cause
1) non hai le date nella colonna D ma in altra colonna (oppure i dati sono disposti diversamente da come hai detto)
2) non esiste nessuna riga avente le tre combinazioni da te cercate tipo (Roma, Rosso, 7), Verifica anche eventuali spazi prima e dopo i nomi.
3) hai il sistema data del Pc non impostato per l'europa che deve essere: gg/mm/aaaa (forse hai mm/gg/aaaa o mm-gg-aaaa)

Ricontrolla questi tre punti se sono soddisfatti e rilancia la macro

Oppure per i primi due punti, prova ad usare questo File

Ciao

Edit: Ho fatto ora (13:10) una modifica nell'ultima parte della macro che, nel caso in cui non venga trovata alcuna corrispondenza la cella "P1" sarà vuota (ho aggiornato anche il file allegato)

Questa è la riga da aggiungere (tra due esistenti)
Codice: Seleziona tutto
Next RR    '<<<<<<<<<<<<<<<<<< esistente
If Mdata = "12/12/2040" Then Mdata = ""    '<<<<<<<<<<<<<<<<<< AGGIUNGERE
Range("P1").Value = Mdata   '<<<<<<<<<<<<<<<<<< esistente
End Sub
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: cerca data piu' vecchia

Postdi mpontic » 14/09/11 13:15

flash ho provato a digitare a manina le date nella colonna D e ora me le riconosce (visualizzando la data allineata a dx se puo' esserti utile).
Si puo' ovviare a questa manualita'?

grazie sempre
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: cerca data piu' vecchia

Postdi Anthony47 » 14/09/11 13:24

La prova fatta con la formattazione numerica dimostra che in col D non ci sono date ma "stringhe"; quindi la macro dovra' convertire queste stringhe in data usando la funzione DateValue, per produrre un risultato attendibile.
Si potrebbe anche fare con le formule, ma se i dati di partenza sono anomali la macro e' la soluzione piu' semplice.
(macro oppure funzione definita dall' utente).

Se l' operazione e' una tantum, nel senso che le finte date non vengono sistematicamente e continuamente importate nel file, si puo' anche provare a convertile da testo a data con questa procedura:
-selezioni una celle vuota, Contr-c per copiare
-selezioni le finte date, Menu /Incolla speciale /scegli incolla Valori con operazione Addiziona; Ok.

Questo consentira' alla formula di funzionare, e probabilmente anche alla macro.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13892
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cerca data piu' vecchia

Postdi Flash30005 » 14/09/11 22:54

Leggi il post di Anthony qui sopra

Nel frattempo puoi provare questa modifica alla macro sostituendola alla precedente
Ho aggiunto 3 righe ma sostituisci tutto per evitare errori di copia/incolla nel punto giusto

Codice: Seleziona tutto
Sub TrovaDataMinima()
UR = Range("A" & Rows.Count).End(xlUp).Row

For RR = 2 To UR   '<<<<<<<<<< Aggiunta riga
Range("D" & RR).Value = Range("D" & RR).Value   '<<<<<<<<<< Aggiunta riga
Next RR   '<<<<<<<<<< Aggiunta riga

Citta = "ROMA"
Colore = "ROSSO"
Numero = 7
Mdata = "12/12/2040"
For RR = 2 To UR
If UCase(Range("A" & RR).Value) = Citta And UCase(Range("B" & RR).Value) = Colore And Range("C" & RR).Value = Numero Then
DataV = Range("D" & RR).Value
If Mdata > DataV Then Mdata = DataV
End If
Next RR
If Mdata = "12/12/2040" Then Mdata = ""
Range("P1").Value = Mdata
End Sub


Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: cerca data piu' vecchia

Postdi mpontic » 15/09/11 08:06

ottimo

grazie
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24


Torna a Applicazioni Office Windows


Topic correlati a "cerca data piu' vecchia":


Chi c’è in linea

Visitano il forum: Nessuno e 6 ospiti