Explicatii rezolvare Stat de plata - Validari
Validarea campului Marca.
Se selecteaza plaja d 22322c212w e celule A4:A12.Din meniul Data se alege optiunea Validation
Allow: Custom
Formula: =AND(COUNTIF($A$4:$A$12;A4)=1;A4=VLOOKUP(A4;$A$17:$A$46;1))
Validarea campului Nume Prenume.
Se selecteaza plaja d 22322c212w e celule B4:B12.Din meniul Data se alege optiunea Validation
Din caseta Allow se alege Custom
In caseta Formula se introduce:
=AND(EXACT(LEFT(B4;SEARCH(" ";B4));UPPER(LEFT(B4;SEARCH(" ";B4))));
EXACT(RIGHT(B4;LEN(B4)-SEARCH(" ";B4));PROPER(RIGHT(B4;LEN(B4)-
SEARCH(" ";B4))));LEN(B4)>7;LEN(B4)<30;NOT(ISBLANK(A4)))
Explicatii:
EXACT (LEFT(B4;SEARCH(" ";B4));UPPER(LEFT(B4;SEARCH(" ";B4))))
Prin functia EXACT se compara rezultatul celor doua expresii subliniate. Prima expresie extrage numele din campul "Nume prenume", cautand cu functia SEARCH pozitia primului spatiu. Functia LEFT extrage primele N caractere din textul celulei B4, N fiind pozitia primului spatiu in cadrul textului din B4, pozitie returnata de SEARCH.
Cea de-a doua expresie se obtine prin transformarea primei expresii cu ajutorul functiei UPPER. Rezultatul este aceeasi expresie scrisa cu majuscule. Daca cele doua sunt identice (luand in calcul si tipul de litera-majuscula sau minuscula) functia EXACT returneaza TRUE.
EXACT(RIGHT(B4;LEN(B4)-SEARCH(" ";B4));PROPER(RIGHT(B4;LEN(B4)-SEARCH(" ";B4))))
Se aplica logica de mai sus, diferenta constand in extragerea ultimelor N caractere din textul de pe campul "Nume prenume", unde N este obtinut prin diferenta dintre numarul total de caractere al campului "Nume prenume" si pozitia primului spatiu. Textul astfel obtinut este comparat cu acelasi text transformat cu functia PROPER (text in care prima litera a fiecarui cuvant este majuscula celelalte fiind minuscule).
LEN(B4)>7
Numarule de caractere trebuie sa fie mai mare decat 7
LEN(B4)<30
Numarul de caractere trebuie sa fie mai mic decat 30
NOT(ISBLANK(A4)))
A4 trebuie sa nu fie vida.
Nota. Optiunea Ignore Blank trebuie debifata, altfel validarea nu va tine cont de expresia ISBLANK(A4)
Validare campului "Data nasterii"
Se selecteaza plaja d 22322c212w e celule C4:C12. Din meniul Data se alege optiunea Validation
Obs
* Indicativul locului de munca este un sir format din prima litera a compartimentului functional si marca salariatului (Ex:M1002)
NU se efectueaza operatie de validare, ci se introduce formula de calcul
=CONCATENATE(LEFT(D4;1);A4)
* Codul salariatului este un agregat format din numele salariatului si indicativul locului de munca al acestuia.(Ex: MANEA C1004)
NU se efectueaza operatie de validare, ci se introduce formula de calcul
=CONCATENATE(LEFT(B4;(SEARCH(" ";B4)-1));" ";E4)
Validarea campului Compartiment
Se selecteaza plaja d 22322c212w e celule C4:C12. Din meniul Data se alege optiunea Validation
Validarea campului "Functia de incadrare"
Se selecteaza plaja d 22322c212w e celule G4:G12. Din meniul Data se alege optiunea Validation List.
La rubrica Source se completeaza astfel:
=IF(D4=$C$16;$C$17:$C$18;IF(D4=$D$16;$D$17:$D$18;IF(D4=$E$16;$E$17:$E$18;IF(D4=$F$16;$F$17:$F$20;FALSE))))
Validare campului "Data angajarii"
Data - Validation - Custom
=AND(WEEKDAY(H4)<>1;WEEKDAY(H4)<>7;(YEAR(TODAY())-YEAR(H4)<30))
SAU
=IF(OR(WEEKDAY(H4;2)=6;WEEKDAY(H4;2)=7);G15;YEAR(TODAY())-YEAR(H4)<=30)
Validarea campului "Salariu incadrare"
Data - Validation - Whole number
Min: =IF(I4<5;3800000;IF(I4<10;VLOOKUP(G4;$B$39:$G$48;2);IF(I4<15;VLOOKUP(G4;$B$39:$G$48;3);IF(I4<20;VLOOKUP(G4;$B$39:$G$48;4);VLOOKUP(G4;$B$39:$G$48;5)))))
Max: =IF(I4<5;VLOOKUP(G4;$B$39:$G$48;2);IF(I4<10;VLOOKUP(G4;$B$39:$G$48;3);IF(I4<15;VLOOKUP(G4;$B$39:$G$48;4);IF(I4<20;VLOOKUP(G4;$B$39:$G$48;5);VLOOKUP(G4;$B$39:$G$48;6)))))
Obs
* Calculul sporului de vechime se realizeaza printr-o functie personalizata, numita SPOR (prin modul VBA) in functie de vechimea efectiva in munca :
-vechime<=3ani - spor=0;
-vechime<=5ani - spor=5%;
-vechime<=10ani - spor=10%;
-vechime<=15ani - spor=15%;
-vechime<=20ani - spor=20%;
-vechime>20ani - spor=25%.
Rezolvare: Din meniul Tools -> Visual Basic Editor. In fereastra deschisa se alege din meniul Insert optiunea Module. In cadrul modulului inserat se scrie urmatoarea functie:
Function spor(vechime, salariu)
If vechime <= 3 Then
spor
ElseIf vechime <= 5 Then
spor = salariu * 5 / 100
ElseIf vechime <= 10 Then
spor = salariu * 10 / 100
ElseIf vechime <= 15 Then
spor = salariu * 15 / 100
ElseIf vechime <= 20 Then
spor = salariu * 20 / 100
Else
spor = salariu * 25 / 100
End If
End Function
Se selecteaza celula K4 -> din meniul Insert -> Function -> categoria User Defined -> spor. In fereastra afisata pe ecran se selecteaza urmatoarele elemente:
rubrica vechime: I4
rubrica salariu: J4
apoi se apasa OK.
* Marca noua
Se va utiliza functia SUBSTITUTE pentru a īnlocui a doua valoare pozitionala din marca salariatului, cu anul nasterii acestuia.
Formatul de afisare va fi: Exemplu: 1-1958-29
L4 = SUBSTITUTE(A4;MID(A4;2;1);"-"&YEAR(C4)&"-";1)
|