Google Sheets Apps Script堆叠IFs写法及总十六分计算自定义函数咨询
自定义函数实现:自定义英尺-英寸-十六分格式转总十六分单位
固定换算基准
- 1英尺 = 12英寸
- 1英寸 = 16个十六分单位
- 总十六分单位计算公式:总数值 = 英尺数 * 192 + 英寸整数部分 * 16 + 十六分尾数(注:1英尺换算为十六分单位为12*16=192)
匹配示例的解析规则
按照给出的输入输出对应关系,拆分规则完全匹配示例要求:
- 字符串长度为1:全段数值为英尺数,无英寸、十六分附属部分,例:输入"1"对应1'
- 字符串长度为2:全段数值为英尺数,无英寸、十六分附属部分,例:输入"12"对应12'
- 字符串长度为3:拆分规则为取第1位作为英寸整数部分,后2位作为十六分尾数,无英尺部分,例:输入"508"对应5 + 8/16 = 5.5",即5 1/2"
- 字符串长度为4:拆分规则为取前2位作为英寸整数部分,后2位作为十六分尾数,无英尺部分,例:输入"1604"对应16 +4/16 =16.25",即16 1/4"
Apps Script 堆叠IF结构实现代码
代码采用最基础的if-else堆叠分支,无复杂逻辑,适合新手调整:
/** * 计算自定义格式对应的总十六分单位数值 * @param {string} inputStr 单元格内输入的自定义格式字符串 * @return {number|string} 换算结果或格式错误提示 * @customfunction */ function CONVERT_TO_16TH(inputStr) { // 预处理:去除首尾空格、统一转字符串类型,避免数值格式导致的长度判断错误 const rawInput = String(inputStr).trim(); let total16th = 0; // 堆叠IF分支判断,按字符串长度匹配解析规则 if (rawInput.length === 1 || rawInput.length === 2) { // 长度1/2:全段为英尺数 const feetValue = Number(rawInput); total16th = feetValue * 12 * 16; } else if (rawInput.length === 3) { // 长度3:1位英寸整数 + 2位十六分尾数 const inchInteger = Number(rawInput.slice(0, 1)); const fractionValue = Number(rawInput.slice(1, 3)); total16th = inchInteger * 16 + fractionValue; } else if (rawInput.length === 4) { // 长度4:2位英寸整数 + 2位十六分尾数 const inchInteger = Number(rawInput.slice(0, 2)); const fractionValue = Number(rawInput.slice(2, 4)); total16th = inchInteger * 16 + fractionValue; } else { // 不支持的输入长度 total16th = "输入格式错误:仅支持1-4位的纯数值字符串"; } return total16th; }
部署与使用步骤
- 打开对应Google Sheets,依次点击「扩展程序」→「Apps Script」
- 删除编辑器内默认的示例代码,粘贴上述代码后保存项目
- 在工作表单元格中直接调用公式
=CONVERT_TO_16TH(目标单元格地址)即可
结果验证
- 输入"1" → 输出192(对应1英尺的总十六分单位)
- 输入"12" → 输出2304(对应12英尺的总十六分单位)
- 输入"508" → 输出88(对应5.5英寸的总十六分单位)
- 输入"1604" → 输出260(对应16.25英寸的总十六分单位)
内容的提问来源于stack exchange,提问作者Geo
相关产品推荐
相关产品推荐

