Andy, the following OpenOffice macro should do roughly what you want. It shades the lowest value white, the highest value red, and values in between various shades of pink.
Slight limitation: it only works on rectangular selections. Making it work on multiple ranges is rather more complicated.
Feel free to use as you wish.
Sub ColourSelectedCells
oSelect=ThisComponent.CurrentSelection
oColumn=oselect.Columns
oRow=oSelect.Rows
Dim valMax
Dim valMin
Dim valTmp
valMax = oselect.getCellByPosition(0,0).Value
valMin = oselect.getCellByPosition(0,0).Value
For nc = 0 To oColumn.getCount-1
For nr = 0 To oRow.getCount-1
oCell = oselect.getCellByPosition(nc,nr)
If oCell.Value > valMax Then
valMax = oCell.Value
End If
If oCell.Value < valMin Then
valMin = oCell.Value
End If
Next nr
Next nc
If (valMax-valMin) <> 0 Then
For nc = 0 To oColumn.getCount-1
For nr = 0 To oRow.getCount-1
oCell = oselect.getCellByPosition(nc,nr)
valTmp = 255*(valMax-oCell.Value)/(valMax-valMin)
oCell.CellBackColor = RGB (255, valTmp, valTmp)
Next nr
Next nc
End If
End Sub