Write-Host $(Get-Date -Format "HH:mm:ss")

$Excel = New-Object -ComObject Excel.Application
$EDatei = $Excel.WorkBooks.Open("R:\m.kraft\Excel Werte ändern\Excel-Datei.xlsx")
$EBlatt = $EDatei.WorkSheets.item(1)
$Excel.Visible = $false

$Pfad = "R:\m.kraft\Excel Werte ändern\EA_Krüger_19.03.2020 - Kurz.txt"
$i = 1

$DIs = @()
$DQs = @()
$Fehler = @()


$Datei = Get-Content $Pfad

$ZuDI = @(„DI“, „BA“, „BB“, „BC“, „BD“, „BE“, „BF“, „BG“, „BH“, „BJ“, „BK“, „BL“, „BM“, „BN“, „BP“, „BQ“, „BR“, „BS“, „BT“, „BU“, „BV“, „BW“, „BX“, „BY“, „BZ“, „FA“, „FB“, „FC“, „FD“, „FE“, „FF“, „FG“, „FH“, „FJ“, „FK“, „FL“, „FM“, „FN“, „FP“, „FQ“, „FR“, „FS“, „FT“, „FU“, „FV“, „FW“, „FX“, „FY“, „FZ“, „SA“, „SB“, „SC“, „SD“, „SE“, „SF“, „SG“, „SH“, „SJ“, „SK“, „SL“, „SM“, „SN“, „SP“, „SQ“, „SR“, „SS“, „ST“, „SU“, „SV“, „SW“, „SX“, „SY“, „SZ“)
$ZuDQ = @(„DQ“, „CA“, „CB“, „CC“, „CD“, „CE“, „CF“, „CG“, „CH“, „CJ“, „CK“, „CL“, „CM“, „CN“, „CP“, „CQ“, „CR“, „CS“, „CT“, „CU“, „CV“, „CW“, „CX“, „CY“, „CZ“, „EA“, „EB“, „EC“, „ED“, „EE“, „EF“, „EG“, „EH“, „EJ“, „EK“, „EL“, „EM“, „EN“, „EP“, „EQ“, „ER“, „ES“, „ET“, „EU“, „EV“, „EW“, „EX“, „EY“, „EZ“, „GA“, „GB“, „GC“, „GD“, „GE“, „GF“, „GG“, „GH“, „GJ“, „GK“, „GL“, „GM“, „GN“, „GP“, „GQ“, „GR“, „GS“, „GT“, „GU“, „GV“, „GW“, „GX“, „GY“, „GZ“, „HA“, „HB“, „HC“, „HD“, „HE“, „HF“, „HG“, „HH“, „HJ“, „HK“, „HL“, „HM“, „HN“, „HP“, „HQ“, „HR“, „HS“, „HT“, „HU“, „HV“, „HW“, „HX“, „HY“, „HZ“, „KA“, „KB“, „KC“, „KD“, „KE“, „KF“, „KG“, „KH“, „KJ“, „KK“, „KL“, „KM“, „KN“, „KP“, „KQ“, „KR“, „KS“, „KT“, „KU“, „KV“, „KW“, „KX“, „KY“, „KZ“, „MA“, „MB“, „MC“, „MD“, „ME“, „MF“, „MG“, „MH“, „MJ“, „MK“, „ML“, „MM“, „MN“, „MP“, „MQ“, „MR“, „MQ“, „MR“, „MS“, „MT“, „MU“, „MV“, „MW“, „MX“, „MY“, „MZ“, „PA“, „PB“, „PC“, „PD“, „PE“, „PF“, „PG“, „PH“, „PJ“, „PK“, „PL“, „PM“, „PN“, „PP“, „PQ“, „PR“, „PS“, „PT“, „PU“, „PV“, „PW“, „PX“, „PY“, „PZ“, „QA“, „QB“, „QC“, „QD“, „QE“, „QF“, „QG“, „QH“, „QJ“, „QK“, „QL“, „QM“, „QN“, „QP“, „QQ“, „QR“, „QS“, „QT“, „QU“, „QV“, „QW“, „QX“, „QY“, „QZ“, „RA“, „RB“, „RC“, „RD“, „RE“, „RF“, „RG“, „RH“, „RJ“, „RK“, „RL“, „RM“, „RN“, „RP“, „RQ“, „RR“, „RS“, „RT“, „RU“, „RV“, „RW“, „RX“, „RY“, „RZ“, „TA“, „TB“, „TC“, „TD“, „TE“, „TF“, „TG“, „TH“, „TJ“, „TK“, „TL“, „TM“, „TN“, „TP“, „TQ“, „TR“, „TS“, „TT“, „TU“, „TV“, „TW“, „TX“, „TY“, „TZ“)

foreach  ($Eintrag in $Datei)
{
    $Eintragszeile = $Eintrag.split("'")
    <#Write-Host "Gesamter eintrag " $Eintragszeile
    Write-Host "Eintrag 1 " $Eintragszeile[0]
    Write-Host "Eintrag 2 " $Eintragszeile[1]
    Write-Host "Eintrag 3 " $Eintragszeile[2]
    Write-Host "Eintrag 4 " $Eintragszeile[3]#>
    $EAZahl = $Eintragszeile[1]
    $EAKommentar = $Eintragszeile[3]

    $EAZahl = $EAZahl.TrimStart("'")
    #$EAZahl = $EAZahl.TrimEnd("'")
    #$EAKommentar = $EAKommentar.TrimStart("'")
    $EAKommentar = $EAKommentar.TrimEnd("'")

    if ($($($EAZahl.Substring(0,2)) -in $ZuDI))
    {
        $EAZahl = $EAZahl -replace("[a-zA-Z]", "")
        $LaengeEAZahl = $($EAZahl.Length - 1)
        $EAZahl = $EAZahl.Substring(0,$LaengeEAZahl) + "." + $EAZahl.Substring($LaengeEAZahl)
        $EAZahl = "DI" + $EAZahl
        $DIs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
    }
    elseif ($($($EAZahl.Substring(0,2)) -in $ZuDQ))
    {
        $EAZahl = $EAZahl -replace("[a-zA-Z]", "")
        $LaengeEAZahl = $($EAZahl.Length - 1)
        $EAZahl = $EAZahl.Substring(0,$LaengeEAZahl) + "." + $EAZahl.Substring($LaengeEAZahl)
        $EAZahl = "DQ" + $EAZahl
        $DQs += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
    }
    else
    {
        Write-Host "Achtung, Fehler bei $EAZahl $EAKommentar"
        $Fehler += @([pscustomobject]@{Name=$EAZahl;Zeile=$i})
        #fehler
    }

    #Write-Host $EAZahl
    #Write-Host $EAKommentar

    $EBlatt.Cells.Item($i,1) = $EAZahl
    $EBlatt.Cells.Item($i,2) = $EAKommentar

    $i++
}

$EDatei.Save()
$Excel.Quit()

$DIs = $DIs | Sort-Object "Name"
$Gleiche = @()

for ($j = 0; $j -lt $($DIs.Count -1); $j++)
{
    $IstGleich = $($DIs[$j].Name -eq $DIs[$($j+1)].Name)
    if ( $IstGleich )
    {
        #Eintrag hinzufügen
        if ( -not $($Gleiche[-1].Zeile -eq $DIs[$j].Zeile))
        {
            $Gleiche += $DIs[$j]
        }
        $Gleiche += $DIs[$($j +1)]
        Write-Host "Gleiche: " $Gleiche
    }
}

# $Gleiche = $Gleiche.Zeile | select -Unique

if ($($Gleiche.Length) -gt 0)
{
    Write-Host "Folgende Eingänge sind doppelt belegt"
    Write-Host "Eingang   Zeile (Excel)"
    foreach ($Gleich in $Gleiche)
    {
        Write-Host $Gleich.Name " " $Gleich.Zeile
    }
}
else
{
    Write-Host "Es gibt keine doppelt belegten Eingänge!"
}

Write-Host $(Get-Date -Format "HH:mm:ss")