【问题标题】:Count non-empty cells in Excel using PowerShell使用 PowerShell 计算 Excel 中的非空单元格
【发布时间】:2021-12-10 19:40:22
【问题描述】:

我需要使用 PS 脚本知道 Excel 中非空单元格的数量。

$excel = new-object -comobject excel.application
$excel.visible = $false
$Workbook = $excel.workbooks.open($FileDir)
$Worksheets = $Workbooks.worksheets
$Worksheet = $Workbook.Worksheets.Item(1)
$Range1 = $Excel.Range("8:8")
$Range1.Count
$Workbook.Save()
$excel.Quit()

这段代码得到 16384,这是 Excel 中的总列数。

Excel 函数 COUNTA() 在 excel 中工作并得到 109,这是正确的结果。

我可能需要这个https://docs.microsoft.com/en-gb/office/vba/api/excel.worksheetfunction.counta,但我的实现不起作用。 $Range1.WorksheetFunction.CountA("")

【问题讨论】:

    标签: excel powershell


    【解决方案1】:

    WorksheetFunctionExcel.Application 类的属性,不是 Excel.Range 类,因此您的代码需要如下所示:

    $excel = new-object -comobject Excel.Application;
    
    # set up some dummy data
    # note - we'll leave A4 blank
    $workbook = $excel.Workbooks.Add();
    $worksheet = $workbook.Worksheets.Item(1);
    $worksheet.Range("A1").Value = "a"
    $worksheet.Range("A2").Value = "b"
    $worksheet.Range("A3").Value = "c"
    #$worksheet.Range("A4").Value = "d"
    $worksheet.Range("A5").Value = "e"
    
    $range = $worksheet.Range("A1:A5");
    
    $count = $excel.WorksheetFunction.CountA($range);
    #        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    
    write-host $count
    # 4
    

    您不是尝试在范围上调用WorksheetFunction,而是从应用程序调用它并将范围作为参数传递。

    【讨论】:

    • 这是重要的部分,现在我更好地理解了。 Instead of trying to invoke WorksheetFunction on the range, you invoke it from the application and pass the range as a parameter.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 1970-01-01
    相关资源
    最近更新 更多