Digamos que quiero una secuencia lógica entre 0 y 100 que tenga 1 número entre ellos, entonces configuro 0 en B1, 100 en B3 y agrego la fórmula en B2:
Si quiero con 9 números entre ellos, solo cambio la celda donde está el 100:
Ahora quiero reproducir esto usando Google Apps Script para no tener una dependencia circular en mi hoja de cálculo.
[[0], [...], [...], [...], [100]]Hasta ahora, he probado esto:
function between() { const min = 0; const max = 100; const total = 11; const seq = (min + max) / total; const lst = [[min]]; let i = 1; while (i <= total-2) { lst.push([(seq*i).toFixed(2)]) i++ } lst.push([max]) SpreadsheetApp.getActive().getSheetByName('data').getRange(1,2,lst.length,1).setValues(lst); }Sin embargo, no genera los valores esperados. ¿Qué debo ajustar para obtener el resultado correcto?
por fórmula
=arrayformula(sequence(B3+1,1,B1*B3,(B2-B1))/B3)o, según la precisión que necesite
=arrayformula((sequence(B3+1,1,B1*1000*B3,(B2-B1)*1000)/B3)/1000)No estoy del todo seguro de qué está haciendo su cálculo en términos matemáticos, pero traté de reconstruir su fórmula y obtuve el siguiente ciclo for (use esto en lugar de su ciclo while):
for(let i = total - 2; i >= 1; i--) { let e = max + i * (min - max) / (total - 1); lst.push([e.toFixed(2)]) }