2015-01-20 102 views
-1

我有一張從表單中提取信息的Google表格。表單將時間戳和ID號輸入電子表格。我需要製作不同的表格來顯示這些條目中的哪些是今天,本週和本月。爲今天,本週和本月發佈的條目製作Google表格

Timestamp  ID 

12/1/2012  12345 
12/1/2012  55555 
12/4/2012  98765 
12/15/2012  74823 

我需要作出規定使ID 12345和55555到一個「DAILY」手冊,編號12345,55555,以及98765成「WEEKLY」片材的片材,和一個具有所有這些在「MONTHLY」表中。

+0

爲什麼[EXCEL]和[Excel的配方]標記? – pnuts 2015-01-20 19:11:15

+0

老實說,希望代碼中有足夠的相似性,以便大規模的Excel社區能夠了解情況。 – 2015-01-20 19:17:43

+0

隨着'邏輯'[SQL]可能會更有意義。 – pnuts 2015-01-20 19:19:58

回答

0

這就是我會做的... 通過在D2中輸入'= Today()'在工作表的某處添加今天的日期(比如說單元格D2)。

在列C中,在前兩列旁邊添加公式來計算A列中的日期與今天的日期之間的天數。在第2行中,公式將如下所示... = DATEDIF(A2,D2,「D」)

然後,使用電子表格中的腳本編輯器編寫腳本,查看C列和根據該值寫入列A和B的值。我沒有測試下面的腳本,但我認爲這是你需要的。本質上,它循環遍歷結果表的C列。根據值(從今天起的天數),將該行推送到每個範圍的數組。然後,我在設置數組的值之前清除了該範圍的表單。我希望這有幫助!

function daysBetween(){ 
 
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(), 
 
    formResultsSheet = spreadsheet.getSheetByName("Form Results"), 
 
    daySheet = spreadsheet.getSheetByName("Today"), 
 
    weekSheet = spreadsheet.getSheetByName("This Week"), 
 
    monthSheet = spreadsheet.getSheetByName("This Month"), 
 
    allData = formResultsSheet.getDataRange().getValues(), 
 
    dayResults = [], 
 
    weekResults = [], 
 
    monthResults = []; 
 
    
 
    for (var i = 0; i < formResultsSheet.getLastRow(); i++) { 
 
     if (allData[i][2] === 0){ 
 
     dayResults.push(allData[i]) 
 
     } else if (allData[i][2] > 0 && allData[i][2] <= 7) { 
 
     weekResults.push(allData[i]) 
 
     } else if (allData[i][2] > 7 && allData[i][2] <= 30) { 
 
     monthResults.push(allData[i]) 
 
     } 
 
    } 
 
    daySheet.getDataRange().clear() 
 
    daySheet.getRange(1,1,dayResults.length,dayResults[0].length).setValues(dayResults) 
 
    weekSheet.getDataRange().clear() 
 
    weekSheet.getRange(1,1,weekResults.length,weekResults[0].length).setValues(weekResults) 
 
    monthSheet.getDataRange().clear() 
 
    monthSheet.getRange(1,1,monthResults.length,monthResults[0].length).setValues(monthResults) 
 
}

相關問題