
你好!伙計們,有人可以幫我解決這個問題嗎?我只想將 Sheet1 Column1 值轉置到 Sheet2 Column5 到 Column9 和 Column2 值到 Sheet2 Column10 到第 12 列。標準是如果“D10:G13”范圍不為空,那么這些值才會轉置到 Sheet2 表單 Sheet1。例如:Sheet1 中的范圍 'D10:G12' 上有一些資料。因此,只有來自 Sheet1 Column1 和 Column2 的值才會針對該特定范圍存盤到 Sheet2。但是在我的代碼中,來自 Sheet1 Column1 和 Column2 的值存盤到 Sheet2,盡管范圍 'D13:G13' 為空,但仍然針對這個空范圍存盤資料。這是我不想要的。我想要的是,如果范圍 'D13:G13' 只填充了一些資料,那么 Column1 和 Column2 資料才會針對它進行存盤。
注意:給定的范圍“D10:G13”是預設的,不能更改。
function transpose() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');
var sh2 = ss.getSheetByName('Sheet2');
var lr = sh2.getLastRow() 1;
var gv1 = sh1.getRange('D10:G13').getValues();
var gv2 = sh1.getRange('A2:A6').getValues();
var gv3 = sh1.getRange('B3:B5').getValues();
var result1 = [...gv1[0], ...gv2.flat(), ...gv3.flat()];
var result2 = [...gv1[1], ...gv2.flat(), ...gv3.flat()];
var result3 = [...gv1[2], ...gv2.flat(), ...gv3.flat()];
var result4 = [...gv1[3], ...gv2.flat(), ...gv3.flat()];
var results = [result1, result2, result3, result4];
sh2.getRange(lr,1,results.length, results[0].length).setValues(results);
}
uj5u.com熱心網友回復:
據我了解,您希望將Sheet1 D10:G13中的行數與Sheet1 Column1 和 Column2的轉置資料相匹配 。
在您的示例中,您想要洗掉Sheet2的第 5 行,因為它D13:G13是空的。
試試這個:
function transpose() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');
var sh2 = ss.getSheetByName('Sheet2');
var lr = sh2.getLastRow() 1;
var gv1 = sh1.getRange('D10:G13').getValues();
var gv2 = sh1.getRange('A2:A6').getValues();
var gv3 = sh1.getRange('B3:B5').getValues();
var results = [];
for(var i = 0; i < gv1.length; i ){
if(JSON.stringify(gv1[i]) != `["","","",""]`){
results.push([...gv1[i], ...gv2.flat(), ...gv3.flat()])
}
}
sh2.getRange(lr,1,results.length, results[0].length).setValues(results);
}
輸出:

注意: 如果我對您的問題的理解正確,請告訴我。此外,如果您能提供預期輸出的螢屏截圖,我們會更容易提供答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/392850.html
上一篇:警告:React.createElement:型別無效——需要一個字串(對于內置組件)(ReactWebpackPhaser)
