Excel自动化操作-office script,自动复制sheetA结果到另一个sheetB
本文原创禁止转载,如需转载请联系博主。
基础:
ref:Cut, copy, and paste ranges using the Excel JavaScript API - Office Add-ins | Microsoft Learn
ref:paste过程记得加个wait()
【Office Scripts】How to wait for the number of specified seconds | Kokoroe (konomi.app)
ref:一个好用的例子:How to copy a filtered table in office script and paste it in a different sheet? - Microsoft Q&A
How to copy a filtered table in office script and paste it in a different sheet?
function main(workbook: ExcelScript.Workbook) { let firstSheet = workbook.getWorksheet("Sheet1"); let table = firstSheet.getTables()[0] let visibleTableRange = table.getRange().getVisibleView(); let visibleTableRangeValues = visibleTableRange.getValues(); let sheetToPaste = workbook.getWorksheet("Paste") let pastedValues = sheetToPaste.getRangeByIndexes(0, 0, visibleTableRange.getRowCount(), visibleTableRange.getColumnCount()); pastedValues.setValues(visibleTableRangeValues); let newTable = sheetToPaste.addTable(pastedValues.getAddress(), true) }
others:Office Script & Power Automate - copy data from one fixed range to - Microsoft Community
我自己写的例子:实现功能:对cm_table 某一列进行filter,把filter后的结果集复制粘贴到另一个sheet - "New SKUs"。
因为实现了复制filtered visible rows,所以会复杂一点。
1 // Get the range of the table column named "Is SKU New?". 2 let cm_table = current_month.getTables()[0]; 3 let cm_ColumnIsSKUNew = cm_table.getColumnByName("Is SKU New?"); 4 // if the index is 81, then the actual column index is the 82th, because index start with 0. 5 console.log(" INDEX:" + cm_ColumnIsSKUNew.getIndex()); 6 // Apply checked items filter on table column Is SKU New? where value = "y" 7 cm_table.getColumnByName("Is SKU New?").getFilter().applyValuesFilter(["Y"]); 8 9 // Get filtered visible table, prepared for pasting. 10 let visibleTableRange = cm_table.getRange().getVisibleView(); 11 let visibleTableRangeValues = visibleTableRange.getValues(); 12 let sheetToPaste = workbook.getWorksheet("New SKUs") 13 let pastedValues = sheetToPaste.getRangeByIndexes(0, 0, 14 visibleTableRange.getRowCount(), visibleTableRange.getColumnCount()); 15 pastedValues.setValues(visibleTableRangeValues); 16 let newTable = sheetToPaste.addTable(pastedValues.getAddress(), true) 17 wait(1000);//1000 ms=1 second 18 console.log("Paste to sheet completed!");
简单版本:
//paste the whole sheet into New SKUs Sheet, this part is not used as it didn't filtered rows.
// let current_month = workbook.getWorksheet("Current Month");
//let new_SKUs = workbook.getWorksheet("New SKUs");
// Paste to range A1 on new_SKUs from table current_month // new_SKUs.getRange().copyFrom(current_month.getRange(), ExcelScript.RangeCopyType.all, false, false);
不谢。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
2020-06-25 Report Server Configuration Manager报表服务器配置管理器,连接新数据库-》报错:无法连接到服务器。
2014-06-25 788错误。L2TP 连接尝试失败,因为安全层不能身份验证远程计算机。怎么解决?