marabunta
Goto Top

Excel Tabellen Formatierung

Hallo,

ich habe eine Tabelle die ich theoretisch auf 1/27 kürzen könnte, wenn ich wüsste wie ich es umformatiere...

A           B         C
Computer1 Datei1 Version1.0
Computer2 Datei1 Version1.0
Computer3 Datei1 Version1.0
Computer1 Datei2 Version1.1
Computer2 Datei2 Version1.1
Computer3 Datei2 Version1.1
Computer1 Datei3 Version1.0
...

oder von der QuellCSV die sieht so aus:
Computer1,"Datei1","1.0"  
Computer1,"Datei2","1.0"  
Computer2,"Datei1","1.0"  
Computer2,"Datei2","1.0"  
Computer3,"Datei1","1.0"  
Computer3,"Datei2","1.0"  

wie verändere ich es in diese Form:

A     B                  C         D        E
           Soll          Computer1    Computer2     Computer3
Datei1 Version1.0        Version1.0 Version1.0 Version1.0
Datei2 Version1.1         Version1.1 Version1.1 Version1.1
Datei3 Version1.0        Version1.0  Version1.0 Version1.0
...

Danke

Content-Key: 278537

Url: https://administrator.de/contentid/278537

Printed on: April 25, 2024 at 09:04 o'clock

Mitglied: 122990
122990 Jul 28, 2015 at 07:30:02 (UTC)
Goto Top
Moin,
mit einer Umwandlung in eine Pivottabelle kannst du das z.B. machen.

Gruß grexit
Member: Marabunta
Marabunta Jul 28, 2015 updated at 07:51:43 (UTC)
Goto Top
Danke für das erste mal Pivot sieht es ganz ok aus. Ein problem habe ich noch:

Ich bekomme die Versionen nicht unter Computer angezeigt, entweder als Anzahl oder unter SollVersion bei den dateinamen links...
Ich kann die Anzahl auch nicht auf Maximum oä. so ändern das es funktioniert...
Zieh ich es in die Spaltenbeschriftung dann stehen die unter den Computernamen aber Spalte für Spalte eine Version

Spaltenbeschriftungen:
Computer

Zeilenbeschriftungen
Dateiname
SollVersion


Zeilenbeschriftungen Spaltenbeschriftungen
Datei1                Computer1    Computer2    Gesamtergebnis
    1.0
Datei2
    1.0


Der sagt mir die Anzahl der Zahlen wäre 0, ich habe die Versionen aber als Zahlen formatiert in der Quelle?
Mitglied: 114757
114757 Jul 28, 2015 updated at 09:48:14 (UTC)
Goto Top
Moin,
wandele die CSV doch einfach mit Powershell vorher um ... du hast es einfach im Vornherein falsch ausgegeben face-wink
Beispiel
$arr = @()
@'  
"Computer","Datei","Version"  
"Computer1","Datei1","1.0"  
"Computer1","Datei2","1.0"  
"Computer2","Datei1","1.0"  
"Computer2","Datei2","1.0"  
"Computer3","Datei1","1.0"  
"Computer3","Datei2","1.0"  
'@ | convertfrom-csv | group Datei | %{  
    $obj = New-Object PSObject -Property @{"Datei"=$_.Name}  
    $_.Group | %{
        $obj | Add-Member -Type NoteProperty -Name $_.Computer -Value $_.Version
    }
    $arr += $obj
}
$arr
Gruß jodel32
Member: Marabunta
Marabunta Jul 30, 2015 updated at 11:41:45 (UTC)
Goto Top
Danke. Logisch adaptieren und umzusetzen ist nicht ganz leicht

Die Dateien werden jetzt einzeln aufgelistet, die Sollversion wird angezeigt, aber nur ein Computer, er durchläuft alles 2 Mal für 2 Computer und bringt in der Liste nur 1 Computer. Nur wieso?
Datei                  SollVersion   Computer1          
-----                 -----------                -----------                                    
D.manifest                                                                                                                       
C.manifest                                                                                                                       
B.dll                2.0                                                                 
A.dll                1.0.0.1                1.0.0.1                                        

$sharepath="C:\Test"  
$Liste=@()

Function Get-IniContent { 
http://gallery.technet.microsoft.com/scriptcenter/ea40c1ef-c856-434b-b8fb-ebd7a76e8d91
  }

$Global:QuellVersionsListe=Get-IniContent $sharepath\Testumgebung\VersionDateiListe.ini
$Global:QuellPfadListe=Get-IniContent $sharepath\Testumgebung\VersionDateiListekurz.ini

$Ziele=gc "$sharepath\Testumgebung\pcnamen2.txt" # Computer1, Computer2  

$i=0
    while($QuellPfadListe.DateiPfade.Values.Count -ne $i) {
    $Pfadteil=$QuellPfadListe.DateiPfade.Values.GetEnumerator() |select -Index $i
    $Ziele |Foreach {
    $AktuellesZiel=$_
    $Pfad="\\" + $AktuellesZiel + $Pfadteil        
     
        $QuellPfadListe.DateiPfade.GetEnumerator() |select -Index $i |group Name | %{
        $groupname=$_
        $obj = New-Object PSObject -Property @{"Datei"=$groupname.Name}  
        $groupname.Group | %{
            $obj | Add-Member -MemberType NoteProperty -Name SollVersion -Value ($QuellVersionsListe["Versionen"][$_.Name])  
            $ZielInhalt=gci $Pfad |select -ExpandProperty versioninfo
            
            $obj | Add-Member -MemberType NoteProperty -Name $AktuellesZiel -Value $ZielInhalt.ProductVersion
            }   
            $liste+=$obj
            $i++
        }
    }
}
$liste

Mit freundlichen Grüßen
Marabunta