SOLVED

Filling a predefined value in a cell based on background color of another cell?

Copper Contributor

I have a SharePoint list with conditional formatting set up for a specific column which changes the cell background between red and green based on date conditions (see json below).

 

Next, I would like to automatically fill in the value 'OK' in column 'Status' based on that background in the date cell 'Just nu på datum' is green, and value 'Not OK' in 'Status' if the same date cell is red.

 

magnusjonasson_0-1679049061992.png

 

Is this possible and how do achieve that?

 

Below is the JSON for the conditional formatting:

 

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "txtContent": "@currentField",
  "style": {
    "padding-left": "10px"
  },
  "attributes": {
    "class": "=if(@currentField <= addDays(@now, -1 * [$M_x00e5_lantalbankdagar]), 'sp-css-backgroundColor-BgCoral sp-css-color-DarkRedText', if(@currentField >= addDays(@now, -1 * [$M_x00e5_lantalbankdagar]), 'sp-css-backgroundColor-BgMintGreen sp-css-borderColor-MintGreenFont', ''))"
  }
}

 

 

Thanks! 

9 Replies

@magnusjonasson Use this JSON for Status column: 

 

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "txtContent": "=if(@currentField <= addDays(@now, -1 * [$M_x00e5_lantalbankdagar]), 'Not OK', if(@currentField >= addDays(@now, -1 * [$M_x00e5_lantalbankdagar]), 'OK', ''))"
}

 

Note: This just displays the value (OK/Not OK) in list view for Status column. It does not actually set the value in Status column.


Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

Thanks! Tried your JSON above on Status column and it shows 'Not OK' whatever date I enter. Color coding works correct but I can't figure out why it doesn't say 'OK' when color is green. Any idea?

Also, will I be able to filter on Status when there is no actual value for it?

@magnusjonasson I forgot to change date column name in JSON conditions in above JSON. Use below JSON instead: 

 

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
  "elmType": "div",
  "txtContent": "=if([$Justnupadatum] <= addDays(@now, -1 * [$M_x00e5_lantalbankdagar]), 'Not OK', if([$Justnupadatum] >= addDays(@now, -1 * [$M_x00e5_lantalbankdagar]), 'OK', ''))"
}

 

Use correct internal name of your date column in place of [$Justnupadatum] in above JSON.

 

Unfortunately, filtering/sorting will not work if you are using JSON to show values.


Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

@magnusjonasson You can follow this article to find out the correct internal name of your date column: Find the internal name of SharePoint column 


Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

Okay, thank you. Works as expected!

Is there any way to actually set a value for the Status cell based on background color of another cell, to be able to use it for filtering?

@magnusjonasson Couple of options for this:

  1. Use calculated column for status - Note, you will not be able to change value via list forms later
  2. Use Power automate flow to change the status column value based on date column - you can run flow on item creation and/or item update for immediate update of status column OR scheduled flow to update status at certain times in a day.
  3. Customize list form using Power apps, update status column value using Power apps formulas based on date column value.

Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

Yes, I'll look into using calculated columns. Thanks!
best response confirmed by magnusjonasson (Copper Contributor)
Solution

@magnusjonasson You have to use the calculated column formula in this format: 

 

=IF([Justnupadatum] <= TODAY()-[Malantalbankdagar], "Not OK", IF([Justnupadatum] >= TODAY()-[Malantalbankdagar], "OK", ""))

 

Here you have to use the display names of columns instead of internal names. Also, if TODAY() does not work, try using NOW().


Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

1 best response

Accepted Solutions
best response confirmed by magnusjonasson (Copper Contributor)
Solution

@magnusjonasson You have to use the calculated column formula in this format: 

 

=IF([Justnupadatum] <= TODAY()-[Malantalbankdagar], "Not OK", IF([Justnupadatum] >= TODAY()-[Malantalbankdagar], "OK", ""))

 

Here you have to use the display names of columns instead of internal names. Also, if TODAY() does not work, try using NOW().


Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.

For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs

View solution in original post