google-apps-script - 在宏中使用单元格的内容,如值
问题描述
我在谷歌表上做一个很小的项目。
事实上这很简单,我试着让我的朋友少做一些事情,但他们比我更糟糕。
我不知道这是否是我们可以在谷歌表格上做的事情,但我的目的是使用单元格中的信息。在这段代码中
function test4v2() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A2:B51').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Loyers'), true);
spreadsheet.getRange('A1').activate();
spreadsheet.getActiveSheet().getFilter().sort(1, true);
spreadsheet.getRange('B55').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Kopie von Model de Bilan V3.1'), true);
spreadsheet.getRange('C2').activate();
spreadsheet.getRange('B55').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
};
我想将响铃放入单元格 B55 并让宏使用单元格 B55 中的内容,而不是像文本,而是像一个范围。
我不知道我说的容易理解吗?
解决方案
- 您想
Loyers!AZ2:BA51
在单元格中获取描述为文本的范围。- 单元格是
Sheet:"Kopie..." cell B55
。
- 单元格是
- 您希望将数据从该范围复制到新范围。
- 新范围基于起始单元格引用:
Sheet:"Kopie..." cell C2
.
- 新范围基于起始单元格引用:
function so6048464601() {
// set up the spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// declare the kopie sheet
var kopie = ss.getSheetByName("Kopie von Model de Bilan V3.1");
// get the value in kopie cell B55
var kopieC55 = kopie.getRange("B55").getValue();
//Logger.log("DEBUG: kopieC55 = "+kopieC55); // display the value in cell B55
// declare the loyers sheet
var loyers = ss.getSheetByName("Loyers");
// declare the loyers range based on Kopie cell B55
var loyersrange = loyers.getRange(kopieC55);
Logger.log("DEBUG: loyer range described on kopie = "+loyersrange.getA1Notation());
// get information about the loyer range
var loyernumRows = loyersrange.getNumRows();
var loyernumColumns = loyersrange.getNumColumns()
Logger.log("DEBUG: # of rows: "+loyernumRows+", # of columns: "+loyernumColumns);
// get the row and colun for beginning of the output range based at kopie Cell C2
var kopieRange = kopie.getRange("C2");
var kopieStartRow = kopieRange.getRow();
var kopieStartColumn = kopieRange.getColumn();
Logger.log("DEBUG: kopie start row: "+kopieStartRow+", kopieStartColumn"+kopieStartColumn);
// declare the target range on Kopie
var kopieTargetRange = kopie.getRange(kopieStartRow, kopieStartColumn, loyernumRows, loyernumColumns);
Logger.log("DEBUG: kopie TargetRange = "+kopieTargetRange.getA1Notation())
//copy loyer data to kopie Target Range
loyersrange.copyTo(kopieTargetRange, {contentsOnly:true});
}
请注意您的代码与此答案之间的更改。
- 表“Kopie ...”已明确声明
- 包含范围名称的单元格的值被赋予一个变量名称
kopieC55
kopieC55
用于getRange(kopieC55)
loyers 的方法中。显示范围地址(A1Notation)的调试确认变量被用作范围。- “Kopie...”上输出范围的元素用于定义目标范围。
- 单元格 C2 的起始行为 2,起始列为 3
- 行数和列数从 中获得
loyersrange
。 - 它们一起用于使用该
getRange(row, column, numRows, numColumns)
方法定义范围