79146251

Date: 2024-10-31 20:38:45
Score: 0.5
Natty:
Report link

taller's answer was effective in solving my problem but I needed to make a few minor adjustments. Here is the final working version of the code for anyone interested.

function main(workbook: ExcelScript.Workbook) {
let tbPO = workbook.getTable("Portland");
let sheet = workbook.getWorksheet("Portland Customers");
let sheet2 = workbook.getWorksheet("Portland Archive");
if (tbPO) {
const tabFilter = tbPO.getAutoFilter();
tabFilter.clearCriteria();
const dataRange = tbPO.getRangeBetweenHeaderAndTotal()
tabFilter.apply(dataRange,
    0, {
    filterOn: ExcelScript.FilterOn.values,
        values: ["Cancelled", "Order Bombed/Job Jacket Sent", "Voided"]
}); const visRng = dataRange.getSpecialCells(ExcelScript.SpecialCellType.visible);
if (visRng) {
    const desDataRange: ExcelScript.Range = sheet2.getUsedRange(true);
    const destCell: ExcelScript.Range = sheet2.getCell(desDataRange.getRowCount()+1, 0);
    destCell.copyFrom(visRng);
    // remove filtered rows from PO
    const visAreas = visRng.getAreas().reverse();
    let visRngRefs: string[] = visAreas.map(x => x.getAddress());
    // remove rows
    visRngRefs.forEach(x => {
        sheet.getRange(x).getEntireRow().delete(ExcelScript.DeleteShiftDirection.up);
    })
}
tbPO.getAutoFilter().clearCriteria(); }}
Reasons:
  • Blacklisted phrase (0.5): I need
  • Long answer (-1):
  • Has code block (-0.5):
  • Self-answer (0.5):
  • Low reputation (1):
Posted by: Kat Brown