我的問題有點復雜。我會盡量簡化它。為簡單起見,我添加了指向該作業表的鏈接。 樣品表
我有一個大約 10,000 行的大表。我想在 B 列中包含單詞“Test 22”的每一行之后插入 9 行。這是第一階段。我想在這 9 行中填充資料的最重要部分(第二階段)如下:
- A 列(產品名稱)單元格將包含與值“測驗 22”的單元格相鄰的第一個單元格相同的產品名稱
- 由 9 個單元格組成的 E 列(空列 2)單元格將包含這些值(結果 1、結果 2、結果 3、結果 4、結果 5、結果 6、平均值、最大值、最小值)。當然,當在 B 列中找到單詞“Test 22”時,將在整個表格中重復此程序。
我已成功執行階段 I,即在 B 列中包含單詞“Test 22”的每一行之后插入 9 個空白行,但我無法執行階段 II。我不知道這個功能是否可以分 1 步或 2 步完成。您的幫助將不勝感激。謝謝
uj5u.com熱心網友回復:
它可以是這樣的:
function myFunction() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var data = sheet.getDataRange().getValues();
var new_data = [];
for (var row in data) {
new_data.push(data[row]);
if (data[row][1] == 'Test 22') {
new_data.push([data[row][0],'','','','Result 1']);
new_data.push([data[row][0],'','','','Result 2']);
new_data.push([data[row][0],'','','','Result 3']);
new_data.push([data[row][0],'','','','Result 4']);
new_data.push([data[row][0],'','','','Result 5']);
new_data.push([data[row][0],'','','','Result 6']);
new_data.push([data[row][0],'','','','Average']);
new_data.push([data[row][0],'','','','Max']);
new_data.push([data[row][0],'','','','Min']);
}
}
sheet.getRange(1,1,new_data.length,new_data[0].length,).setValues(new_data);
}
或者,使用更簡潔的符號表示相同的演算法:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var new_data = [];
var col_e = ['Result 1','Result 2','Result 3','Result 4',
'Result 5','Result 6','Average','Max','Min'];
for (let row of data) {
new_data.push(row);
if (row[1] == 'Test 22') {
col_e.forEach(e => new_data.push([row[0],'','','',e]));
}
}
sheet.getRange(1,1,new_data.length,new_data[0].length,).setValues(new_data);
}
更新
格式化F列的函式:
function format_column_F() {
var sheet = SpreadsheetApp.getActiveSheet();
var column = sheet.getRange('E:E').getValues().flat();
var formats = new Array(9).fill(['0.00 %']);
var row = 0;
while (row < column.length) {
if (column[row] == 'Result 1') {
let range = `F${row 1}:F${row 6}`;
let formulas = [[`=AVERAGE(${range})`],[`=MAX(${range})`],[`=MIN(${range})`]];
sheet.getRange(`F${row 7}:F${row 9}`).setFormulas(formulas);
sheet.getRange(`F${row 1}:F${row 9}`).setNumberFormats(formats);
row = 9;
}
}
}
參考:
- 日期和數字格式
- Range.setFormulas()
- 陣列填充()
- 模板文字`${}`
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/389329.html
