我對 Apps 腳本比較陌生,并且仍在更新我的基本 Java 編碼和表格公式,所以請多多包涵。
我有超過一千張發票,在多個電子表格中包含不同數量的行,但每張發票都是每張表中的一個選項卡。我試圖找出一種方法在 F 列中最后一個非空單元格的相應行(即最后一個非空單元格是 F 列是 F23,我想讓 A23 說“結束”)。由于 F 列中的最后一個非空單元格更改了每張發票之間的行,因此我無法使用表格公式,因為我還沒有找到一種方法,只在與實際最后一個非空行相同的行中填充“End”空單元格。
我嘗試使用 IF(OR(ISNUMBER(SEARCH(... 公式,但我不太確定如何將其與僅填充相對于最后一個非空文本的文本鏈接。
任何幫助是極大的贊賞。
謝謝
uj5u.com熱心網友回復:
可能有更好的方法可以做到這一點,但您可以使用此公式查找 F 列中的最后一行。=MAX(FILTER(ROW(F:F),NOT(ISBLANK(F:F))))
如果你想自動化,我想你可以做一些奇怪的事情......如果你在你的作業表上運行它,它應該可以作業。
更新為在整個作業簿上作業。
function fixAllSheets() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
var allSheets = ss.getSheets();
allSheets.forEach(enterSomeEnd_)
}
function enterSomeEnd_(theSheet) {
var someRandomCell = theSheet.getRange(theSheet.getMaxRows(), 1, 1, 1);
someRandomCell.setFormula('=MAX(FILTER(ROW(F:F),NOT(ISBLANK(F:F))))');
var theRow = someRandomCell.getValue();
theSheet.getRange(theRow, 1).setValue("end");
someRandomCell.clearContent();
}
uj5u.com熱心網友回復:
將 A 列設定為結束
您需要在第二行提供檔案夾 ID,然后希望腳本在大約 6 分鐘內完成。
這不是自定義腳本。它必須從選單或腳本編輯器運行
function setColumnAToEnd() {
const folder = DriveApp.getFolderById("folderId");
const files = folder.getFilesByType(MimeType.GOOGLE_SHEETS);
while(files.hasNext()) {
let file = files.next();
let ss = SpreadsheetApp.openById(file.getId());
ss.getSheets().forEach(sh => {
let lr = getColumnHeight(6,sh,ss);
sh.getRange(lr,1).setValue("End");
})
}
}
function getColumnHeight(col, sh, ss) {
var ss = ss || SpreadsheetApp.getActive();
var sh = sh || ss.getActiveSheet();
var col = col || sh.getActiveCell().getColumn();
var rcA = [];
if (sh.getLastRow()){ rcA = sh.getRange(1, col, sh.getLastRow(), 1).getValues().flat().reverse(); }
let s = 0;
for (let i = 0; i < rcA.length; i ) {
if (rcA[i].toString().length == 0) {
s ;
} else {
break;
}
}
return rcA.length - s;
}
uj5u.com熱心網友回復:
有沒有辦法把你寫的腳本系結到我目前設定的函式 SKUInvoice2 中:
將兩者結合后進行了編輯,但我將“theSheet”更改為“電子表格”只是為了匹配應用程式腳本預先填充的宏代碼并且一切正常!謝謝你們倆。
function SKUInvoiceall() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (i=0;i<spreadsheet.length;i ){
var sheet = spreadsheet[i];
SKUInvoice2(sheet);
}
function SKUInvoice2(spreadsheet) {
var spreadsheet = spreadsheet
spreadsheet.getRange('B:B').activate();
spreadsheet.insertColumnsBefore(spreadsheet.getActiveRange().getColumn(), 1);
spreadsheet.getActiveRange().offset(0, 0, spreadsheet.getActiveRange().getNumRows(), 1).activate();
spreadsheet.getRange('B10').activate()
.setFormula('=IF(OR(ISNUMBER(SEARCH("NAAT",C10))),"1163344",IF(OR(ISNUMBER(SEARCH("Molecular",C10))),"1163344",IF(OR(ISNUMBER(SEARCH("Rapid Covid",C10))),"1163344",IF(OR(ISNUMBER(SEARCH(" PCR",C10))),"7105",IF(OR(ISNUMBER(SEARCH("RT-PCR",C10))),"1166916", IF(OR(ISNUMBER(SEARCH("Treatment",C10))),"SKU", ""))))))');
spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('B10:B48'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
spreadsheet.getRange('A25').activate();
var someRandomCell = spreadsheet.getRange(spreadsheet.getMaxRows(), 1, 1, 1);
someRandomCell.setFormula('=MAX(FILTER(ROW(F:F),NOT(ISBLANK(F:F))))');
var theRow = someRandomCell.getValue();
spreadsheet.getRange(theRow, 1).setValue("END");
someRandomCell.clearContent();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/487767.html
標籤:javascript 爪哇 谷歌应用脚本 谷歌表格
