如何在Google Sheets单元格中添加仅可选择月份的datepicker
解决方案:Google Sheets单元格添加仅选月份的日期选择器
方法一:数据验证预设月份列表(无代码,操作最简单)
- 操作步骤:
- 先在表格空白区域(比如隐藏的辅助列/辅助工作表)生成你需要的月份序列,格式统一为
YYYY-MM,比如2023-01、2023-02,可以直接拖动填充快速生成所有可选月份 - 选中你要添加选择器的目标单元格,点击顶部菜单栏「数据」->「数据验证」
- 「条件」下拉选择「来自范围的列表」,点击范围选择框选中你刚才生成的所有月份序列
- 勾选「显示下拉列表」选项,按需选择是否开启「无效数据时显示警告/拒绝输入」,点击保存
- 先在表格空白区域(比如隐藏的辅助列/辅助工作表)生成你需要的月份序列,格式统一为
- 优点:操作零门槛,不需要写代码,稳定性极高;可以自定义月份范围,避免出现无效选项
- 缺点:如果需要动态跨多年的月份范围,需要提前把所有月份都列在辅助区域
方法二:Apps Script自定义日期选择器(支持自动生成月份选项,无需手动维护列表)
- 操作步骤:
- 点击顶部菜单栏「扩展程序」->「Apps 脚本」,打开脚本编辑器
- 把默认的代码全部替换为下面的代码:
function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('自定义工具') .addItem('插入月份选择器', 'showMonthPicker') .addToUi(); } function showMonthPicker() { const html = HtmlService.createHtmlOutput(` <!DOCTYPE html> <html> <body> <input type="month" id="monthInput" style="width:100%;padding:8px;margin:10px 0;"> <button onclick="submitMonth()" style="padding:8px 16px;float:right;">确认</button> <script> function submitMonth() { const month = document.getElementById('monthInput').value; google.script.run.withSuccessHandler(() => google.script.host.close()).insertMonthToCell(month); } </script> </body> </html> `).setWidth(300).setHeight(150); SpreadsheetApp.getUi().showModalDialog(html, '选择月份'); } function insertMonthToCell(month) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const activeCell = sheet.getActiveCell(); activeCell.setValue(month); }
- 点击保存按钮,给项目随便起个名字(比如「月份选择器工具」),按照提示授权脚本访问你的表格权限
- 回到Google Sheets页面,刷新一下,顶部菜单栏就会出现「自定义工具」的新菜单,选中你要填月份的单元格,点击「自定义工具」->「插入月份选择器」就可以弹出仅选月份的选择器了
- 优点:不需要维护辅助列,原生的month类型输入框体验更好,支持动态选择任意年份的月份
- 小提示:你也可以给这个功能绑定快捷键,不需要每次点击菜单调用
补充:如果你需要把选中的
YYYY-MM格式的月份转换为日期格式参与计算,可以用公式=DATE(LEFT(A1,4), RIGHT(A1,2), 1)把它转换为对应月份的1号日期,不影响后续的日期统计、筛选操作。
内容的提问来源于stack exchange,提问作者Django Unchained
相关产品推荐
相关产品推荐

