如果公式从R到excel,openxlsx写作

我想从R导出excel数据框有两列,我想用excel填充公式,以便用户以后可以更改阈值。 我的问题是,如何将如下IF(C2> 4;“YES”;“NO”)的公式导出到excel的新列的每个单元格中。

R码:

library(openxlsx) library(dplyr) export_df<- mtcars %>% tibble::rownames_to_column(var="carname") # Formulas in EXCEL IF(C>4; "YES";"NO") IF(E>100; "YES";"NO") export_df$many_cyl <- paste(paste(paste0(paste0("IF(C" ,seq(2,nrow(export_df)+1 ,1))," > 4")," 'Yes' ", sep=";")," 'No') ", sep=";") export_df$fast_car <- paste(paste(paste0(paste0("IF(E" ,seq(2,nrow(export_df)+1,1))," > 100")," 'Yes' ", sep=";")," 'No')", sep=";") class(export_df$many_cyl) <- c(class(export_df$many_cyl), "formula") class(export_df$fast_Car) <- c(class(export_df$fast_car), "formula") openxlsx::addWorksheet(wb,sheetName ="mtcars" ) openxlsx::writeData(wb,"mtcars",export_df ) openxlsx::saveWorkbook(wb, "mtcars.xlsx") 

我尝试创buildExcel公式的方式不起作用。 该脚本在我声明列是公式的步骤失败。 第二种方法来创build单独的向量并将其导出到工作簿也不起作用。

我该如何解决这个问题?

你的Excel公式是错误的。 你需要双引号是和不是,也是逗号分隔你的参数不是分号。 尝试以下操作:

 export_df$many_cyl <- paste(paste(paste0(paste0('=IF(C' ,seq(2,nrow(export_df)+1 ,1)), ' > 4'),' "Yes" ', sep=','),' "No") ', sep=',') export_df$fast_car <- paste(paste(paste0(paste0('=IF(E' ,seq(2,nrow(export_df)+1,1)), ' > 100'),' "Yes" ', sep=','),' "No")', sep=',') wb <- createWorkbook() addWorksheet(wb, "Sheet 1") writeFormula(wb, sheet = "Sheet 1", x = export_df$many_cyl, startCol = 2, startRow = 1) saveWorkbook(wb, "writeFormulaExample.xlsx", overwrite = TRUE) 

在这里输入图像说明