VBA到GAS脚本转换[关闭]

问题描述 投票:-1回答:1

我对Excel和Spreadsheets中的宏和内容都很陌生。我有一个朋友在Excel中创建了这个宏,它完成了所需的工作:

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim day As String

    If Target.Row > 2 Then        
        day = Date
        Sheets("CFbase").Cells(Target.Row, Target.Column).Value = day
    End If

End Sub

简而言之:我需要在我的第一张纸上输入一个文本,然后在另一张纸上的等效单元格中生成今天的日期。

我需要这样才能稍后使用日期进行条件格式化,然后使用日期为每个单元格着色,具体取决于它是在今天还是在最后几天更新的。

可以将此宏转换为电子表格的脚本吗?

excel excel-vba google-apps-script google-sheets
1个回答
2
投票

我会做这样的事情。每当你添加一个新值时,onEdit(e)triggers。然后你获取值并将实际日期放在另一个sheet的同一单元格中。如果您不希望每次执行此代码行,也可以添加条件。

function onEdit(e)
{
  // condition to make sure you are not entering value in the date sheet
  if(e.source.getActiveSheet().getName() != "CFbase" && e.range.rowStart > 2)
  {
    //grab the sheet where you wan't the date to be inserted.
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CFbase");
    //grab the cell where the date will be inserted 
    var cell = sheet.getRange(e.range.getRow(), e.range.getColumn());
    //create the actual date
    var now = Utilities.formatDate(new Date(), "GMT+1", "dd/MM/yyyy");
    //set the value of the cell with the date
    cell.setValue(now);
  }
}

Here是正确格式化Date的文档。

© www.soinside.com 2019 - 2024. All rights reserved.