我有一個帶有按鈕的作業表的 Google 作業表,[Summary]單擊該按鈕時會執行宏以將新列添加到不同的作業表,[May 2022]然后從按鈕的原始作業表中獲取一個值,將該值添加到_1該新作業表的單元格中列,并粘貼頁面原始列中的一些值。它還在基礎表中添加了一個新行,以記錄特定名稱,以創建不斷增長的收集名稱和匹配日期串列。我的代碼提示您使用是/否確認這一點。
我想讓這個宏將新作業表(C2:C)范圍內的整個列范圍復制到單元格下新添加的列中_1,以便在該(_2:_)范圍內添加每個單元格的格式、條件格式和公式。該程序應該是它創建一個新列,添加名稱的值,然后在生成的新列中添加所有格式和公式(C2:C)。我不想復制/粘貼值;它需要粘貼公式。
function Add_Patient_Button(){
// Display a dialog box with a message and "Yes" and "No" buttons. The user
//can also close the
// dialog by clicking the close button in its title bar.
var ui = SpreadsheetApp.getUi();
var response = ui.alert(
'Please confirm that you are about to add a new patient.',
ui.ButtonSet.YES_NO);
// Process the user's response.
if (response == ui.Button.YES) {
Add_New_Patient_Column();
}
if (response == ui.Button.NO) {
}
else {
}
}
function Add_New_Patient_Column()
{
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('9:9').activate();
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.getRange('A9').activate();
spreadsheet.getRange('E3:F3').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.getRange('C9').activate();
spreadsheet.getCurrentCell().setValue('0');
var ss = SpreadsheetApp.getActive();
var date = ss.getSheetByName('Summary').getRange('E3').getDisplayValue();
var namesSheet = ss.getSheetByName('May 2022')
var names = namesSheet.getRange('C2:C').getValues().filter(function (r) {return r[0]})
names.unshift([date])
namesSheet.getRange(1, namesSheet.getLastColumn() 1, names.length, 1).setValues(names)
var spreadsheet = SpreadsheetApp.getActive();
}
這是我的作業表的副本。https://docs.google.com/spreadsheets/d/1GbdoAY24Y1AMuDsXbRdUnDx4RuPzSN4krl-qcaCwC5o/edit?usp=sharing
我需要在宏中進行哪些更改才能實作這一點?
uj5u.com熱心網友回復:
不確定我是否理解整個任務。我建議克隆作業表“May 2022”上最后存在的列,并根據作業表“摘要”的單元格 E3 中的名稱更改其第一個單元格。
Add_New_Patient_Column()如果函式如下所示,則可以完成:
function Add_New_Patient_Column() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('May 2022');
var last_col = sheet.getLastColumn();
var last_row = sheet.getLastRow();
// add a new empty column
sheet.insertColumnAfter(last_col);
// copy all cells from the last column into the new column
sheet.getRange(1,last_col, last_row, 1).copyTo(sheet.getRange(1,last_col 1));
// change the header of the new column
var src_sheet = ss.getSheetByName('Summary');
var [name, date] = src_sheet.getRange('E3:F3').getValues().flat();
sheet.getRange(1,last_col 1).setValue(name);
// append a new row at the 'Summary' sheet
var new_row = [name, date, 0, '???'];
src_sheet.appendRow(new_row);
}
更新
如果要在第 9 行上方添加新行,則必須替換該行:
src_sheet.appendRow(new_row);
和:
src_sheet.insertRowBefore(9);
src_sheet.getRange('a9:d9').setValues([new_row]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/463303.html
