0

想知道是否有办法编写 excel office 脚本来填写 excel 表中的值。类似于我们在旧版 excel 中使用“转到特殊”实现的效果,或者如果我们可以将 VBA 以下转换为 excel office 脚本。

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

编辑

下面是我想要实现的截图。 数据集的图像

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

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 //
}

谢谢你。

4

1 回答 1

2

从您更新的示例中,您似乎正在尝试根据该单元格为空时所在的行将公式设置为 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)
}

此代码首先从表 (Table1) 的列 (Office) 中获取一系列单元格。然后它使用这个范围来获取一个公式数组并遍历该数组。如果数组中给定元素的值为空字符串,则返回串联字符串“=B”和给定单元格的行之和 + 1。如果给定数组的值不为空,则原返回值。在数组中的所有元素都被迭代后,它将原始范围内的值设置为更新后的数组中的值。所以它不是完全填充,但它应该是相似的。

于 2021-09-10T17:37:50.617 回答