在openxlsx中使用for循环复制公式——更高效的方法思路? (即应用函数?)

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

就像标题所说...尝试在 Excel 中自动化工作簿制作以尽可能多地生成月度报告。

当前使用以下结构和语法来复制引用特定单元格和其他选项卡的公式,每月获取新数据:

for(i in 1:10){
  writeFormula(wb, tab_name, paste0('SUMIFS(A:A,B:B,A',i',), startRow = i, startCol = 1)
}

这种语法和结构最终实现了我想要的,即将公式复制到定义的单元格范围......但随着我变得越来越大,迭代变得越来越耗时。

尝试看看是否有更有效的方法可以在不使用 for 循环的情况下迭代 writeFormula() 列,以便运行时间不会太长。否则,在生成其他所有内容之后,这部分似乎更容易在 Excel 中手动运行或使用一些 VBA 代码运行。

r for-loop automation rstudio openxlsx
1个回答
1
投票

以下示例使用

paste0
构造索引递增的字符向量,而不使用 for 循环,并将该向量放置在工作表中,并在列中按降序放置:

library(openxlsx)
?writeFormula
wb <- createWorkbook()
addWorksheet(wb, "Sheet 1")
writeData(wb, "Sheet 1", x = iris)
writeFormula(wb, sheet = 1, x = paste0("A", 10+0:9), 
                            startCol = 10, startRow = 2)
saveWorkbook(wb, "writeFormulaExample.xlsx", overwrite = TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.