You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Google Script实现基于单元格数据的ArrayFormula批量生成随机数

可行,两种方案任你选

方案一:纯公式实现(无需脚本)

直接在E列的起始行(比如E16)输入以下公式,就能自动给D列有内容的所有行生成0到对应D值的随机数,表单提交新数据时会自动生效:

=ArrayFormula(IF(D16:D<>"", RAND()*D16:D, ""))
  • 原理:ArrayFormula批量处理整列,IF判断D列是否有内容,RAND()生成0-1的随机数再乘以D列数值,得到目标范围的随机数。
  • 注意:RAND()是易失性函数,表格每次刷新(比如编辑单元格、打开表格)都会重新生成随机数,如果需要固定不变的随机数,看方案二。

方案二:脚本+表单提交触发器(生成固定随机数)

如果希望随机数生成后不再变化,可修改脚本并配置表单提交触发器,每次表单提交新数据时自动给对应行生成随机数:

function onFormSubmit(e) {
  const sheet = e.source.getSheetByName('SubmittedPolicies');
  const newRow = e.range.getRow();
  const dValue = sheet.getRange(`D${newRow}`).getValue();
  
  // 仅当D列有有效数值时生成随机数
  if (typeof dValue === 'number' && dValue >= 0) {
    sheet.getRange(`E${newRow}`).setValue(Math.random() * dValue);
  }
}

配置步骤:

  1. 打开脚本编辑器(工具->脚本编辑器)
  2. 替换原有代码为上面的代码
  3. 点击顶部菜单「编辑」->「当前项目的触发器」
  4. 点击「添加触发器」,配置:
    • 选择函数:onFormSubmit
    • 选择部署类型:「Head」
    • 选择事件源:「表单提交」
    • 选择事件类型:「来自表单的提交」
  5. 保存并授权权限

这样每次表单提交新数据,对应的E列单元格就会生成固定的随机数,不会随表格刷新变化。

内容的提问来源于stack exchange,提问作者Jason West

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:48:28