Ok, another option is using a parametrized variable. Not exactly the same expression but easier to maintain...
Create a variable with your expression with the number as parameter:
if(Questions_$1_Score = 1, red(),
if(Questions_$1_Score =2, rgb(255,128,0),
if(Questions_$1_Score =3, yellow(),
if(Questions_$1_Score =4, green()))))
$1: The first parameter of the variable call
Then you can set this BGColor expression:
Chart 1: $(variableName(1)) //Replaces '$1' with '1'
Chart 2: $(variableName(2)) //Replaces '$1' with '2'
This way, if you want to change colors or values, you only need to change the variable value instead of every expression.
It looked that you used crosstable-structures which needs often more efforts and ressourcen to calculate and display things. Therefore my suggestion to transform the table, see here what is meant: The Crosstable Load.