Hi,
similar topic discussed somewhere in the past, but it was several years ago, so it's a good time to review and remember simple but useful formula.
I just curious - what is the purpose of part with 'upper X' ? To be honest, I didn't remember text sequence for enabled checkbox, just tried and get [x]. Do you know when [X] can be returned?
Anyway, I would simplify it from one side, but check for list to avoid NaN
IF(FIND('[',Checklist),
(LEN(Checklist) - LEN(SUBSTITUTE(LOWER(Checklist), '[x]', '[]'))) /
(LEN(Checklist) - LEN(SUBSTITUTE(Checklist, '[', ''))))