# Adressing Import-CSV

**URL:** https://forums.powershell.org/t/adressing-import-csv/15486
**Category:** PowerShell Help
**Created:** [January 16, 2021, 6:04am UTC](https://forums.powershell.org/t/adressing-import-csv/15486 "2021-01-16T06:04:41Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![danield](https://avatars.discourse-cdn.com/v4/letter/d/48db29/32.png) [@danield](https://forums.powershell.org/u/danield)
#### Post date: [January 16, 2021, 6:04am UTC](https://forums.powershell.org/t/adressing-import-csv/15486/1 "2021-01-16T06:04:41Z")

</div>

Hi,

I need to import a CSV (not a problem) where the first Column is always filled, but all other columns are random. Row 2 can have 4, row 3 99 and row 4 5, …

Then I need to figure out how many columns are filled and if anyone was a moron and left any column empty.

[CSV-Headers]  
Group;User01;User02;User03;…;User99

[CSV-Import]  
 `$csv = “”`  
`$csv = Import-Csv -Path $csvpath -Delimiter “;”`

&nbsp;

---

<div class="post-metadata">

### Author: ![rob-simmers](https://sea1.discourse-cdn.com/flex019/user_avatar/forums.powershell.org/rob-simmers/32/1010_2.png) [@rob-simmers](https://forums.powershell.org/u/rob-simmers)
#### Post date: [January 16, 2021, 11:13am UTC](https://forums.powershell.org/t/adressing-import-csv/15486/2 "2021-01-16T11:13:46Z")

</div>

It is much easier to assist if you provide data examples, expected output. It’s a bit more work to get what it sounds like you are looking for as you have to parse the properties of the object and then get a count of values that are not null. The code below is basically using an implicit foreach with $property.Value to enumerate all values as an array:

```
PS C:\Users\rasim> $csv.User01           
Foo
Bar
Diddly
PS C:\Users\rasim> $csv.User01.Count

3
PS C:\Users\rasim>
```

This code is should accomplish what you want based on your minimal requirements:

```
$csv = @"
Group;User01;User02;User03
Group123;Foo;;Foo
Group124;Bar;;;
Group125;Diddly;;Do
"@ | ConvertFrom-Csv -Delimiter ';'

$result = foreach ($prop in ($csv[0].PSObject.Properties | Where-Object{$_.Name -ne 'Group'})) {
    [pscustomobject]@{
        User = $prop.Name
        ValueCount = ($csv."$($prop.Name)" | Where-Object{$_}).Count
    }
}

$result # | Where-Object{$_.ValueCount -eq 0}
```

**Output:**

```
PS C:\Users\rasim> $csv

Group User01 User02 User03
----- ------ ------ ------
Group123 Foo Foo
Group124 Bar
Group125 Diddly Do

PS C:\Users\rasim> $result

PS C:\Users\rasim> c:\Users\rasim\Desktop\temp.ps1

User ValueCount
---- ----------
User01 3
User02 0
User03 2
```

Lastly, a bit of friendly advice. Would recommend that you find ways to improve processes to ensure you are getting valid data than resort to calling anyone a ‘moron’. Especially as you are here asking for advice on how to solve a problem. Respect your peers, customers and the community.

---

<div class="post-metadata">

### Author: ![dotnVo](https://avatars.discourse-cdn.com/v4/letter/d/4af34b/32.png) [@dotnVo](https://forums.powershell.org/u/dotnVo)
#### Post date: [May 16, 2024, 8:28pm UTC](https://forums.powershell.org/t/adressing-import-csv/15486/3 "2024-05-16T20:28:00Z")

</div>


