openxlsx中复制公式:替代for循环的高效实现方案咨询
高效批量写入SUMIFS公式到openxlsx工作簿
当前使用逐行循环的方式写入公式,随着行数增加速度会明显变慢:
for(i in 1:10){ writeFormula(wb, tab_name, paste0('SUMIFS(A:A,B:B,A', i, ')'), startRow = i, startCol = 1) }
需要一种无需for循环、高效调用writeFormula()向下填充公式的方法。
解决方案
直接生成包含所有目标公式的字符向量,一次性传递给writeFormula()完成批量写入:
# 生成对应1-10行的公式向量 formulas <- paste0('SUMIFS(A:A,B:B,A', 1:10, ')') # 一次性写入到指定起始位置的连续单元格区域 writeFormula(wb, sheet = tab_name, x = formulas, startRow = 1, startCol = 1)
关键说明
writeFormula()的x参数支持接收字符向量,向量中的每个元素会自动按行顺序填充到从startRow、startCol开始的单元格中- 这种单次调用的方式避免了循环中重复调用函数的额外开销,数据量越大,效率提升越显著
内容的提问来源于stack exchange,提问作者triangle_coder
相关产品推荐
相关产品推荐

