使用Google Script将列数据分配到指定横向单元格区域的需求
Google Script 实现列数据横向分配逻辑
需求概述
将表格中每一列的纵向数据,转换为横向的一行数据:
- 原C列数据分配至
C1:J1区域 - 原D列数据分配至
K1:R1区域 - 后续列按此规则依次分配
原始数据(8行6列)
M1 TU1 WE1 TH1 FR1 SA1 M2 TU2 WE2 TH2 FR2 SA2 M3 TU3 WE3 TH3 FR3 SA3 M4 TU4 WE4 TH4 FR4 SA4 M5 TU5 WE5 TH5 FR5 SA5 M6 TU6 WE6 TH6 FR6 SA6 M7 TU7 WE7 TH7 FR7 SA7 M8 TU8 WE8 TH8 FR8 SA8
预期输出示例(单列转横向一行)
M1 M2 M3 M4 M5 M6 M7 M8
实现脚本
function distributeColumnsToRows() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getActiveSheet(); // 获取原始数据范围(假设原始数据从A1开始,8行6列) const dataRange = sheet.getRange(1, 1, 8, 6); const data = dataRange.getValues(); // 遍历每一列,将列数据转为横向行 data[0].forEach((_, colIndex) => { // 提取当前列的所有行数据 const columnData = data.map(row => row[colIndex]); // 计算目标行的起始列:第一列目标从C(3)开始,每列偏移8列(匹配每行8个数据长度) const targetStartCol = 3 + colIndex * 8; // 将横向数据写入目标区域(第1行,从targetStartCol开始,1行8列) sheet.getRange(1, targetStartCol, 1, 8).setValues([columnData]); }); }
脚本说明
- 数据读取:获取当前活动表格中8行6列的原始数据
- 列遍历处理:对每一列单独提取纵向数据,转换为横向数组
- 目标位置计算:第一列目标起始列为C列(第3列),后续每列的目标起始列在前一列基础上偏移8列,适配每行8个数据的长度
- 数据写入:将转换后的横向数组写入对应目标行区域
内容的提问来源于stack exchange,提问作者prabhu s
相关产品推荐
相关产品推荐

