Отображение количества записей в Excel

#excel #powershell

Вопрос:

У меня есть следующие данные на одном листе Excel

   Error Code                         type   object
-Ignored:31 Modified src data       *file   MINOSFIC/UTMNUP10
-Ignored:33 Modified src amp; tgt data *file   MINOSFIC/UVEGAP10
*Error:  08 Different data          *file   MINOSFIC/VM010P50
 

Мне нужно подсчитать записи на основе кода ошибки и поместить данные в тот же лист

 ErrorCode  Count
Ignored    2
Error      1
 

Я пробовал сводную таблицу, но, похоже, не могу использовать ее в существующем листе Excel.

Обновить:

Я могу получить подсчет, используя приведенный ниже код, но мне нужна помощь, чтобы поместить его в таблицу Excel в какой-либо таблице или каким-либо другим способом

 $Excel = Import-Excel -Path "C:Verify.xlsx" -WorksheetName "EDH_VFN"

$err = 0
$ign = 0
foreach($line in $Excel )
{
    $line_1 = $line.'Error Code'
    if($line_1 -match "Ignored")
    {
        
       $ign =1 
    }
    if($line_1 -match "Error")
    {
    
        $err =1
    }        
}

write-host "Error:"$err
write-host "Ignored:"$ign
 

Пожалуйста, вам нужна помощь в этом

Комментарии:

1. Итак, где у вас возникли проблемы с вашим кодом?

2. Вы можете использовать COUNTIFS с подстановочными * знаками .

3. @BigBen: COUNTIFS-это функция excel, если я не ошибаюсь? Мне нужно сделать это с помощью powershell. Посчитайте, что я получу . но как поместить это в существующий лист Excel, вот в чем проблема

Ответ №1:

Если вы не хотите делать это с помощью функции Excel COUNTIFS , я бы предложил просто экспортировать этот файл Excel в файл CSV, что значительно упрощает работу в PowerShell.

Пример файла CSV

 Error Code,type,object
-Ignored:31 Modified src data,*file,MINOSFIC/UTMNUP10
-Ignored:33 Modified src amp; tgt data,*file,MINOSFIC/UVEGAP10
*Error:  08 Different data,*file,MINOSFIC/VM010P50
 

Как только вы это сделаете, получение значений количества можно будет выполнить следующим образом:

 Import-Csv -Path 'X:TheExcelToCsvExportedFile.csv' | 
    Group-Object @{Expression = {($_.'Error Code' -split ':')[0].Substring(1)}} | 
    Select-Object @{Name = 'ErrorCode' ; Expression = {$_.Name}},Count
 

Это выведет:

 ErrorCode  Count
---------- -----
Ignored        2
Error          1
 

вы можете просто скопировать/вставить свой файл Excel в любое удобное для вас место.

Однако будьте осторожны, чтобы это не соответствовало столбцам, которые у вас там уже есть..