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);

 

不谢。

posted @   po-A  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2020-06-25 Report Server Configuration Manager报表服务器配置管理器,连接新数据库-》报错:无法连接到服务器。
2014-06-25 788错误。L2TP 连接尝试失败,因为安全层不能身份验证远程计算机。怎么解决?

Tushare大数据开放社区-免费提供各类金融数据和区块链数据 , 助力智能投资与创新型投资。

Python, Matlab, R, Web数据抽取学习交流。

点击右上角即可分享
微信分享提示