Simpler way to convert High/Medium/Low symbols to score - without using nested IFs?

Mike.AMike.A
edited 12/31/20 in Formulas and Functions
12/31/20 Edited 12/31/20
Accepted

I am trying to "score" rows using Impact vs Effort columns.

I know I can do this using a complicated nested IF statement. In google sheets, I can more easily use VLookup or Choose like this:

=VLOOKUP(M4,{"Low",1;"Medium",2;"High",2},2,FALSE) / VLOOKUP(N4,{"Low",1;"Medium",2;"High",2},2,FALSE)

or

=CHOOSE(MATCH(M4,{"Low","Medium","High"},0),1,2,3) / CHOOSE(MATCH(N4,{"Low","Medium","High"},0),1,2,3)


For smartsheet, does anyone know of a way to use something simpler than the nested IF below? Can smartsheet VLookup use a string array as the range like gsheets (eg: {"Low","Medium","High"})?

=IF(AND([OBJ: IMPACT]@row = "High", [OBJ: EFFORT]@row = "High"), 1, IF(AND([OBJ: IMPACT]@row = "Medium", [OBJ: EFFORT]@row = "High"), .67, IF(AND([OBJ: IMPACT]@row = "Low", [OBJ: EFFORT]@row = "High"), .33, IF(AND([OBJ: IMPACT]@row = "High", [OBJ: EFFORT]@row = "Medium"), 1.5, IF(AND([OBJ: IMPACT]@row = "Medium", [OBJ: EFFORT]@row = "Medium"), 1, IF(AND([OBJ: IMPACT]@row = "Low", [OBJ: EFFORT]@row = "Medium"), .5, IF(AND([OBJ: IMPACT]@row = "High", [OBJ: EFFORT]@row = "Low"), 3, IF(AND([OBJ: IMPACT]@row = "Medium", [OBJ: EFFORT]@row = "Low"), 2, IF(AND([OBJ: IMPACT]@row = "Low", [OBJ: EFFORT]@row = "Low"), 1)))))))))

Any insights appreciated!

Popular Tags:

Best Answers

  • Paul NewcomePaul Newcome ✭✭✭✭✭
    Accepted Answer

    You could also build it out on the same sheet and then hide the columns so they are not visible.

  • Mike.AMike.A
    Accepted Answer

    Yep. That’s the option I will have to explore as well. Thanks again.


    ps: allowing arrays for range inputs would add a lot of flexibility without more columns.

Answers

  • Paul NewcomePaul Newcome ✭✭✭✭✭

    If you have the grid built out somewhere in a sheet, you can use an INDEX/MATCH/MATCH.


    =INDEX({Score Portion}, MATCH([OBJ: IMPACT]@row, {Impact Labels}, 0), MATCH([OBJ: EFFORT]@row, {Effort Labels}, 0))


    The MATCH function pulls a value for where within a range the specified data falls. So we use a MATCH function to pull the row number based on the Impact and another MATCH function to pull the column number based on the Effort.


    Now that we have row and column numbers, we drop them into the appropriate portion of the INDEX function, and there you go.

  • Thanks for the idea @Paul Newcome.

    I don't have that "grid" built out in smartsheet as it does not really fit my row structure. (wish smartsheet had "tabs" as well since I don't really want to create another loose sheet just for the grid). That is why I was checking if smartsheet allowed an array as a range input like google does ({"Low","Medium","High"}). This allows a huge amount of flexibility when trying to translate items without needing other physical columns. I guess not...

    Will have consider the trade-off between error prone nested IF's and linking to an external sheet.

    Thank for the quick response!

  • Paul NewcomePaul Newcome ✭✭✭✭✭
    Accepted Answer

    You could also build it out on the same sheet and then hide the columns so they are not visible.

  • Mike.AMike.A
    Accepted Answer

    Yep. That’s the option I will have to explore as well. Thanks again.


    ps: allowing arrays for range inputs would add a lot of flexibility without more columns.

Sign In or Register to comment.