lundi 26 mars 2018

How do i calculate if with multiple criteria and for easy can be done in VBA

I want to drive an if formula for the following criteria, but the formula is becoming too long. can it be done through VBA. i have 31 columns based on the number of days on a month.

1st Criteria Designations:

  • Manager - Man
  • Asst Manager - AsstMan
  • Executive - Exe
  • Supervisor - Sup
  • Officer - Off
  • Front line Officer - Flo
  • Driver - dvr
  • Female Staff - FS

2nd Criteria Attendance

  • P = Present
  • A = Absent
  • W = Weekly off
  • V = Vacation
  • L = Leave without pay
  • D = Left the Job

I have derived a sheet which tells me on the basis of their ID number their attendance. - Now i want to calculate their per day salary on the basis of their designation and attendance. - On the basis of their designation, attendance and where they are performing their job (kind of location allowance).

Following is the if formula i have derived:

=IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Man"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("P"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("AsstMan"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("P"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Exe"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("P"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FLO"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("P"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FS"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("P"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Man"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("A"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Exe"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("A"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FS"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("A"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FLO"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("A"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("AsstMan"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("A"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Man"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("W"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("AsstMan"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("W"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FLO"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("W"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Exe"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("W"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FS"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("W"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Man"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("V"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("AsstMAn"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("V"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Exe"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("V"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FLO"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("V"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FS"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("V"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Man"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("L"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("AssMAn"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("L"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("Exe"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("L"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FLO"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("L"=Attendence!E4),0)),IF(ISNA(MATCH(1,($B4=INDIRECT("'"&E$3&"'!$D$4:$D$1000"))*("FS"=INDIRECT("'"&E$3&"'!$G$4:$G$1000"))*("L"=Attendence!E4),0)),"",-(ABBR!$C$79/$E$1)),-(ABBR!$C$78/$E$1)),-(ABBR!$C$77/$E$1)),-(ABBR!$C$76/$E$1)),-(ABBR!$C$75/$E$1)),(ABBR!$C$79/$E$1)),(ABBR!$C$78/$E$1)),(ABBR!$C$77/$E$1)),(ABBR!$C$76/$E$1)),(ABBR!$C$75/$E$1)),(ABBR!$C$79/$E$1)),(ABBR!$C$78/$E$1)),(ABBR!$C$77/$E$1)),(ABBR!$C$76/$E$1)),(ABBR!$C$75/$E$1)),("0")),("0")),("0")),("0")),("0")),(ABBR!$C$79/$E$1)),(ABBR!$C$78/$E$1)),(ABBR!$C$77/$E$1)),(ABBR!$C$76/$E$1)),(ABBR!$C$75/$E$1))

Ask if i have missed anything. Need Help

Thanks in advance

Aucun commentaire:

Enregistrer un commentaire