簡體   English   中英

如何從 Excel 表中獲取 PowerShell 中重復值的計數

[英]How to get the count of repeated values in PowerShell from an Excel Sheet

PowerShell

Excel

我添加了兩個附件一個是 PowerShell 另一個是 Excel 表。 我已經編碼以獲得 Excel 表中存在的重復值。 但是這個代碼只有在他們找到准確的值時才會起作用。 但我的目標是計算每個單元格中存在的重復值的數量。 例如,在我的 excel 屏幕截圖中,如果您在A2 和 A6中出現“工作日”。 . 我需要計數為 2,但根據我的 PowerShell 腳本,它顯示為 1。

如何實現這個功能?

根據我的評論,從您的回復中,您走在了正確的道路上。 Group-Object允許將腳本塊傳遞到您的-Property參數中,您可以反過來使用-Replace將屬性替換為嘗試匹配的名稱:

Import-Csv -Path ".\Testing.csv" | 
    Group-Object -Property { $_.Name -replace "(Jay)\w+",'$1' } -NoElement

指定-NoElement會從結果中省略組的成員,從而為您留下:

Count Name                     
----- ----                     
    2 Ajay                     
    2 Jay                      
    1 Ray                      

基於 Abraham 的解決方案,使用Group-Object應該可以通過使用腳本塊來定義您想要分組的自定義屬性。 在這種情況下,我們可以檢查哪些名稱與其他名稱匹配並使用其中一個(我選擇了最短期限的 go)

# START TEST DATA
$data = @'
Name,PIA
Workday,23
Docusign,56
OneTrust,89
Mk Denial,78
How will you join Workday,45
Which Workday,23
OneTrust Maintenance,75
'@ | ConvertFrom-Csv
# END TEST DATA

# Replace $data below with Import-Csv Testing.csv
$data | Select-Object Name | Group-Object -Property {
    $item = $_
    if (($shortest = $data.name | Where-Object { $_ -ne $item.Name -and $item.name -match [regex]::Escape($_) } | Sort-Object {$_.Length} | Select-Object -First 1)) {
        $shortest
    }
    else {
        $item.Name
    }
} | Select-Object Count, Name, @{n = 'Items'; e = { $_.Group.Name -join ', ' } }

Output

Count Name      Items
----- ----      -----
    1 Docusign  Docusign
    1 Mk Denial Mk Denial
    2 OneTrust  OneTrust, OneTrust Maintenance
    3 Workday   Workday, How will you join Workday, Which Workday

所以,像這樣使用 countif() :

在此處輸入圖像描述

COUNTIF(A$2:A$6,C2)

但你也可以使用:

COUNTIF(A$2:A$6,"Jay*")

但是我發現這不太靈活。

然后你可以使用 sumif() 來獲取總數等

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM