Excel 用于填充的 Office 脚本

Excel Office Script to FillDown

想知道是否有办法编写 excel 办公脚本来填写 excel sheet 中的值。类似于我们在遗留 excel 中使用 'go to special' 实现的结果 或者,如果我们可以将下面的 VBA 转换为 excel office 脚本。

Sub FillDown()
 For each cell in Selection
     if cell = "" Then
     cell.FillDown
   End if
 Next
End Sub

编辑

下面是我想要实现的截图。 Image of dataset

到目前为止我已经使用下面的代码来获取空单元格,现在我需要获取空单元格上方的值并迭代每个空单元格填充上面的值。

function main(workbook: ExcelScript.Workbook) {
  // Get the current used range.
  let range = workbook.getActiveWorksheet().getUsedRange();
  // Get all the blank cells.
  let blankCells = range.getSpecialCells(ExcelScript.SpecialCellType.blanks).getAddress();
  console.log(blankCells)
  //I want to iterate on each blank cell and take the value above it into this blank celles //
}

谢谢。

从更新后的示例来看,您似乎在尝试根据单元格为空时所在的行将公式设置为 B 列中的值。我已将代码更新为更加动态。

我认为 Office 脚本目前没有实现向下填充功能。但是你可以试试这个代码:

function main(workbook: ExcelScript.Workbook) {
  let ws: ExcelScript.Worksheet = workbook.getActiveWorksheet();
  let tableName: string = "Table1";
  let tableColumn: string = "Office";
  let columnFormula: string = "=B";
  let inputRange: ExcelScript.Range = workbook.getTable(tableName).getColumn(tableColumn).getRange();
  let inputFormulas: string[][] = inputRange.getFormulas();
  let newVals: string[][] = inputFormulas.map((cell,row)=>{
    if (cell.toString() === "") {
      return [columnFormula + (row + 1)];
    } else {
      return [cell.toString()];
    }
  })
  inputRange.setFormulas(newVals);
}

此代码首先从 table (Table1) 中的列 (Office) 中获取一系列单元格。然后它使用此范围获取公式数组并遍历该数组。如果数组中给定元素的值为空字符串,则 returns 连接字符串“=B”和给定单元格的行的总和 + 1。如果给定数组的值不是空,则返回原始值。在迭代数组中的所有元素后,它将原始范围中的值设置为更新后的数组中的值。所以不是完全filldown,但是应该差不多。