Excel VBA 到 Office 脚本

问题描述 投票:0回答:1

我正在努力从 VBA 代码制作 Office 脚本代码。 ChatGPT 帮不上忙,遗憾的是我没有学习任何 JS 或任何脚本语言。您能帮我将此 VBA 代码转换为 Office 脚本吗?

基本上,此代码复制 G 列中包含“Lejárt”数据的行并将其粘贴到其他工作表中。 这是 VBA 代码:(仅供参考:Munka1 表示 Sheet1)

Sub masolas()

a = Worksheets("Munka1").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To a
    If Worksheets("Munka1").Cells(i, 7).Value = "Lejárt" Then
    
        Worksheets("Munka1").Rows(i).Copy
        Worksheets("Munka2").Activate
        b = Worksheets("Munka2").Cells(Rows.Count, 1).End(xlUp).Row
        Worksheets("Munka2").Cells(b + 1, 1).Select
        ActiveSheet.Paste
        Worksheets("Munka1").Activate

    End If
Next

Application.CutCopyMode = False
ThisWorkbook.Worksheets("Munka1").Cells(1, 1).Select
End Sub
excel typescript vba office365 office-scripts
1个回答
0
投票
function main(workbook: ExcelScript.Workbook) {
    let sheet1 = workbook.getWorksheet("Sheet1");
    let sheet2 = workbook.getWorksheet("Sheet2");
    sheet2.getRange().clear(ExcelScript.ClearApplyTo.contents);
    let lastRow = sheet1.getRange("A:A").getLastCell().getRangeEdge(ExcelScript.KeyboardDirection.up).getRowIndex() + 1;
    let values = sheet1.getRange("G1:G" + lastRow).getValues();
    for(let i=0; i<values.length; i++){
        if (values[i][0] == "Lejárt") {
            let lastRow2 = sheet2.getRange("A:A").getLastCell().getRangeEdge(ExcelScript.KeyboardDirection.up).getRowIndex();
            if (sheet2.getCell(lastRow2,0).getText().length) {
                lastRow2 += 1;
            }           
            sheet2.getCell(lastRow2, 0).copyFrom(sheet1.getRange(`${i+1}:${i+1}`), ExcelScript.RangeCopyType.all, false, false);
        }
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.