Condividi:        

Se due valori sono uguali deve restituirmi il giorno

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

Se due valori sono uguali deve restituirmi il giorno

Postdi carlodag » 15/06/09 16:07

Salve ragazzi ritorno con il mio registro gestione personale,questa volta dovrei calcolarmi il giorno della malattia tipo:

A1 Nome
B1 Cognome
C1 ID
D1 Qualifica
E1 1 gennaio
F1 2 gennaio
ecc...

ora dovrei avere questo risultato SE in E1 è presente MAL "Malato" in un altro foglio dovrei avere come risultato il giorno del mese tipo "1" mi dareste voi una mano???

Grazie mille

Carlo
carlodag
Utente Junior
 
Post: 92
Iscritto il: 01/03/05 19:48
Località: Palermo

Sponsor
 

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi ricky53 » 15/06/09 17:21

Ciao,
di quale mese, quello di "F1"?

Ciao da Ricky53
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: Se due valori sono uguali deve restituirmi il giorno

Postdi carlodag » 15/06/09 17:35

ricky53 ha scritto:Ciao,
di quale mese, quello di "F1"?

Ciao da Ricky53



Si Ricky53 quella di F1
carlodag
Utente Junior
 
Post: 92
Iscritto il: 01/03/05 19:48
Località: Palermo

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi carlodag » 15/06/09 17:42

Scusami ho sbagliato a rappresentare il mio registro allora riepilogando


A1 Qualifica
B1 Cognome
C1 Nome
D1 ID
E1 1 Gennaio
F1 2 Gennaio
G1 3 Gennaio

E2 turno di servizio
E3 Turno di Servizio
ecc...

Ora se io in E2 scrivo MAL "MALATO" mi dovrei trovare in un'altro foglio chiamato malati il giorno dove c'è MAL cioè il 2 "E2" ecc... tutti in unica riga tipo cosi " 2 3 5 6 7 12 24 31 " questi dovrebbero essere i giorni che il dipendente risulta "MAL" Cioè Malato.

Spero di esermi fatto capire.

Grazie mille
Carlo
carlodag
Utente Junior
 
Post: 92
Iscritto il: 01/03/05 19:48
Località: Palermo

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi ricky53 » 16/06/09 00:18

Ciao,

i giorni di malattia (2 3 5 ...) vanno scritti in celle distinte del foglio "malati" oppure sono concatenati tutti nella stessa cella ???

Ciao da Ricky53
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: Se due valori sono uguali deve restituirmi il giorno

Postdi Anthony47 » 16/06/09 02:01

Abbiamo gia' trattato altre volte richieste analoghe...
-In Foglio1 hai i dati come descritti
-In Foglio2, da C1 verso destra ti fai una serie di 1,2,3,4,.. fino al numero max di MAL che ti aspetti.
-in A2 e B2 riporti Nome e Cognome da Foglio1 con formule tipo =Foglio1!A2 e Foglio1!B2
-In C2 poi inserisci la formula
Codice: Seleziona tutto
=SCARTO(Foglio1!$A$1;0;PICCOLO(SE(Foglio1!$E2:$AI2="MAL";RIF.COLONNA(Foglio1!$E2:$AI2);"");C$1)-1)
che confermerai con Contr-Maiusc-Enter (non solo Enter)
Sostituisci il range E2:AI2 con quello effettivamente usato dalle date nel tuo Foglio1
-copi poi B2 verso destra per quante intestazioni hai in riga 1 e poi verso il basso per quanti nominativi hai.

E' quello che cercavi?

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

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi carlodag » 16/06/09 06:38

ricky53 ha scritto:Ciao,

i giorni di malattia (2 3 5 ...) vanno scritti in celle distinte del foglio "malati" oppure sono concatenati tutti nella stessa cella ???

Ciao da Ricky53


Tutte in unica cella

Anthony47 ha scritto:Abbiamo gia' trattato altre volte richieste analoghe...
-In Foglio1 hai i dati come descritti
-In Foglio2, da C1 verso destra ti fai una serie di 1,2,3,4,.. fino al numero max di MAL che ti aspetti.
-in A2 e B2 riporti Nome e Cognome da Foglio1 con formule tipo =Foglio1!A2 e Foglio1!B2
-In C2 poi inserisci la formula
Codice: Seleziona tutto
=SCARTO(Foglio1!$A$1;0;PICCOLO(SE(Foglio1!$E2:$AI2="MAL";RIF.COLONNA(Foglio1!$E2:$AI2);"");C$1)-1)
che confermerai con Contr-Maiusc-Enter (non solo Enter)
Sostituisci il range E2:AI2 con quello effettivamente usato dalle date nel tuo Foglio1
-copi poi B2 verso destra per quante intestazioni hai in riga 1 e poi verso il basso per quanti nominativi hai.

E' quello che cercavi?

Ciao.



Provo a vedere cosa ne esce fuori ma come detto sopra a me interessa inserire tutti i giorni malatti in unica cella se possibile
carlodag
Utente Junior
 
Post: 92
Iscritto il: 01/03/05 19:48
Località: Palermo

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi ricky53 » 16/06/09 12:10

Ciao,

comunque mi risulta strano e dififcilmente utilizzabile avere i giorni di malattia tutti in una cella. Ma tutti quelli di un mese?
A qusto punto nasce spontanea una domanda: come gestisci le malattie a cavallo di due mesi?

Non sarebbe meglio separare i giorni di malattia uno per cella ed utilizzare il suggerimento di Anthony?

Ciao da Ricky53
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: Se due valori sono uguali deve restituirmi il giorno

Postdi Anthony47 » 16/06/09 14:05

Mah, dopo che hai messo quei numeri in una stringa ti e' chiaro che non li elabori piu'?
Comunque...
Con formule, con i tuoi dati su Foglio1:
-in Foglio2, A2 e B2 ci riporti Nome e Cognome; in C2 inserisci 1 spazio; in D2 usi la formula
Codice: Seleziona tutto
=SE(Foglio1!F2="MAL";D2&(RIF.COLONNA()-2)&" ";D2)
che poi copi verso destra per altre 30 celle, quindi fino ad AH2;
-AH2 contiene il tuo risultato
-copi la riga 2 verso il basso per quanti nominativi hai
-volendo puoi nascondere le colonne C:AG per non farti abbagliare da troppi dati

OPPURE ti fai una User Function:
-in un Modulo di codice standard (es Modulo1) inserisci questo codice:
Codice: Seleziona tutto
Function MALAT(Data1) As String
For Each MalDay In Data1
If MalDay = "MAL" Or MalDay = "mal" Then MALAT = MALAT & " " & (MalDay.Column - Data1.Column + 1)
Next MalDay
End Function

Poi sul foglio excel dove vuoi eserai una formula tipo
Codice: Seleziona tutto
=malat(E2:AI2)
che poi copierai verso il basso per le altre righe che contengono un turno di servizio.

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi carlodag » 16/06/09 21:51

Allora hai ragione Rick se metto tutti i giorni in un unica cella mi ritrovo una seguenza di giorni per 1 mese visto che il mio registro si divide in mesi, il fatto è che questi dati in unica cella li devo trasmettere cosi ad altri uffici non servono a me e questi dati io li stampo su carta perciò non credo che servono in futuro anzi non mi servono perchè io le malattie me le gestisco diversamente per i miei dati.

ora provo le formule e moduli che mi consigliate e vedo di adoperare quella più idonea.

Vi ringrazio anticipatamente
carlodag
Utente Junior
 
Post: 92
Iscritto il: 01/03/05 19:48
Località: Palermo

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi carlodag » 16/06/09 22:18

Anthony47 ha scritto:Mah, dopo che hai messo quei numeri in una stringa ti e' chiaro che non li elabori piu'?

OPPURE ti fai una User Function:
-in un Modulo di codice standard (es Modulo1) inserisci questo codice:
Codice: Seleziona tutto
Function MALAT(Data1) As String
For Each MalDay In Data1
If MalDay = "MAL" Or MalDay = "mal" Then MALAT = MALAT & " " & (MalDay.Column - Data1.Column + 1)
Next MalDay
End Function

Poi sul foglio excel dove vuoi eserai una formula tipo
Codice: Seleziona tutto
=malat(E2:AI2)
che poi copierai verso il basso per le altre righe che contengono un turno di servizio.

Ciao, fai sapere.


Allora usando questo modulo e formula ho visto che mi conta le celle e fosse una buona soluzione se avessi le date tutte collegate vicino tipo E2 F2 G2 ecc... come al solito ho trascurato le celle con lo stroardinario quando ho illustrato all'inizio.

Ora non vorrei farvi perdere tempo con le mie mali spiegazioni ma io i giorni li ho divisi ogni 5 celle tipo E2 J2 ecc....

Vi chiedo umilmente scusa per aver trascurato questo grosso particolare.

Carlo
carlodag
Utente Junior
 
Post: 92
Iscritto il: 01/03/05 19:48
Località: Palermo

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi Anthony47 » 17/06/09 00:08

Vi chiedo umilmente scusa per aver trascurato questo grosso particolare.
:evil: E la cenere sul capo? I carboni ardenti?

COMUNQUE, modifica il codice cosi':
Codice: Seleziona tutto
Function MALAT(Data1) As String
Dim I As Integer, J As Integer
I = 0
For Each MalDay In Data1
J = Int(I / 5)
If MalDay = "MAL" Or MalDay = "mal" Then
If I Mod 5 = 0 Then MALAT = MALAT & " " & (J + 1)
End If
I = I + 1
Next MalDay
End Function

Non cambia la sintassi della formula, salvo l' uso di un intervallo leggermente piu' ampio.

Se vuoi farlo solo con formule, allora basta che editi le 31 formule di Foglio2, ora praticamente tutte uguali, per far puntare a ognuna di esse la cella corrispondente su Foglio1; e' solo un lavoro di pazienza, tra un errore qua e la', il tempo di accorgersene e correggere sarebbe certamente pronto per il riepilogo di Giugno :D :D
Sconsiglio, nel caso ti si accendesse la lucina, di usare SCARTO per moltiplicare per 5 ogni incremento di colonna: se non sbaglio tu hai 400 righe di nominativi, e 400*31 formule "volatili" (cioe' che si ricalcolano a ogni qualsivoglia modifica del foglio) cominciano a sentirsi come tempo di esecuzione.
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Se due valori sono uguali deve restituirmi il giorno

Postdi carlodag » 17/06/09 16:30

Che devo dire se fossimo vicini vi offrirei un bel Caffè, avete risolto un'altro mio incubo eheheheh spettacolare ho usato l'ultima formula con modulo postato da Anthony47 cioè questa
Function MALAT(Data1) As String
Dim I As Integer, J As Integer
I = 0
For Each MalDay In Data1
J = Int(I / 5)
If MalDay = "MAL" Or MalDay = "mal" Then
If I Mod 5 = 0 Then MALAT = MALAT & " " & (J + 1)
End If
I = I + 1
Next MalDay
End Function


ripeto modificandolo per le mie esigenze e come per magia ecco tutto fatto.

Grazie mille ancora
Carlo
carlodag
Utente Junior
 
Post: 92
Iscritto il: 01/03/05 19:48
Località: Palermo


Torna a Applicazioni Office Windows


Topic correlati a "Se due valori sono uguali deve restituirmi il giorno":


Chi c’è in linea

Visitano il forum: Nessuno e 17 ospiti