NaN means one of your attributes is not a number (it may be text, or empty) and you are trying to do number things with it (e.g. addition). So the first thing to check: does each attribute have a default value that is a number (including 0). If not, that's the the first thing to fix. Second thing: are any of the attributes autocalc fields? If so, sheet workers don't read them as numbers, they read then as a text formula and you'll get the NaN error when you try to do anything with them. The fix for that is replacing those autocalcs with sheet workers Thirdly, and this is a subtle one: can the attributes ever be empty? That is, no number, no text, nothing in the input at all? that can also cause an NaN error. A workaround for the last one, and similar errors is to include error checking in each attribute. When you call the attribute, append ||0, like (+values.repeating_basicskills_basicskillbox1 || 0) When the attribute is invalid, it will be replaced by the number 0, allowing the rest of the calculation to work. (Sometimes ||1 is better, like in multiplications.) If none of this fix your issue, you need to break down the sheet worker and examine the values of each attribute. Note: the code below deliberately does not use error checking (like adding ||0) because we want to find the error, not hide it. The worker below disables the setattrs function, and prints out the value of each attribute to console log: on("change:repeating_basicskills:basicskillbox1 change:repeating_basicskills:basicskillbox2 change:repeating_basicskills:basicskillbox3 change:repeating_basicskills:basicskillbox4 change:repeating_basicskills:basicskillcharacteristic sheet:opened", function() { getAttrs(["repeating_basicskills_basicskillbox1", "repeating_basicskills_basicskillbox2", "repeating_basicskills_basicskillbox3", "repeating_basicskills_basicskillbox4", "repeating_basicskills_basicskillcharacteristic"], function(values) { let bsc = +values.repeating_basicskills_basicskillcharacteristic; let bsb1 = +values.repeating_basicskills_basicskillbox1; let bsb2 = +values.repeating_basicskills_basicskillbox2; let bsb3 = +values.repeating_basicskills_basicskillbox3; let bsb4 = +values.repeating_basicskills_basicskillbox4; console.log(`=============================== CHECKING VALUES: BSC = ${bsc}; BSB1 = ${bsb1}; BSB2 = ${bsb2}; BSB3 = ${bsb3}; BSB4 = ${bsb4};`); // note: that long ===== at the start is just to make it stand out in the console log /* let skill = Math.floor(+values.repeating_basicskills_basicskillcharacteristic * +values.repeating_basicskills_basicskillbox1) + +values.repeating_basicskills_basicskillbox2 + +values.repeating_basicskills_basicskillbox3 + +values.repeating_basicskills_basicskillbox4; setAttrs({ repeating_basicskills_basicskill:skill }); */ }); }); You can check each value, and see if anything jumps out as wrong. Try changing each attribute and see what the console log reports. Let us know how you get on.