我正在尝试设置2个Google工作表文件,其中文件1负责当天的购买;日期,客户名称,付款方式,付款金额以及表格中的付款金额。文件2将复制文件1中的内容,基本上充当该月的长期记录。我正在使用QUERY和IMPORTRANGE导入数据,并且也将其存储在文件2仅在购买日期位于该特定月份的情况下才复制的位置。
我的问题是,如果我擦除文件1中的任何内容,它将擦除或更改文件2中的任何内容。因此,如果我们今天有3笔购买,而我在一天结束时擦除了它们,则它们将在文件2中被擦除,如下所示:好。我需要帮助,找到一种方法,文件2可以复制数据,但是如果文件1可以擦除数据,则不会擦除任何内容。
我尝试用谷歌搜索答案,但是找不到。
这是我在文件2中使用的公式:
=QUERY((IMPORTRANGE("File 1 url (Erased for security reasons)", "Logs")),"select Col1,Col2,Col3,Col4,Col5, Col6,Col7 where Col1 >= date '"&TEXT(DATEVALUE("7/1/2019"),"yyyy-mm-dd")&"' and Col1 < date '"&TEXT(DATEVALUE("8/1/2019"),"yyyy-mm-dd")&"'",0)
答案 0 :(得分:0)
这里的问题是您的第二张纸将根据第一张纸的运行编辑进行更新。如果要将值保留在归档表中,则需要复制值,并在要复制的单元格之间建立链接。
您可以使用一个小型的Apps脚本功能来实现此目的,该功能可以从绑定脚本到电子表格之一,也可以是独立脚本:
function copyFromOneSheetToAnother() {
var sheet1 = SpreadsheetApp.openById("ID of Spreadsheet to copy from");
var sheet2 = SpreadsheetApp.openById("ID of Spreadsheet to copy to");
var currDate = new Date();
var editedDate = new Date(currDate - 86400000);
var insert = sheet1.getSheetByName("Name of sheet to copy from");
var archive = sheet2.getSheetByName("Name of sheet to copy to");
var insertData = insert.getRange(2, 1, (sheet1.getRange('A:A').getNextDataCell(SpreadsheetApp.Direction.DOWN).getRow()), 28);
for (row = 2; row <= insertData.getNumRows(); row++){
var data = insert.getRange(row, 1, 1, 28).getValues();
if (data[0][0] < currDate && data[0][0] > editedDate){
archive.getRange((archive.getLastRow() + 1), 1, 1, 28).setValues(data).setNumberFormat("MM/dd/yyyy");
}
}
}