blueeyephoenix
Goto Top

Powershell excel Zeilen entfernen

Hallo Commuity,

ich hab da mal ein Problem bei dem ich nicht weiterkomme.

Ich habe eine Excelliste mit ca 20 zeilen und bearbeite diese über Powershell. Dabei lass ich mir über :

$sheet.cells.item(2,19) ="=Sum(R:R)-Sum(R1)"

eine Summe ausgeben und möchte, dass die Tabelle gelöscht wird wenn diese Summe unter 200 ist.
Dafür habe ich folgendes:

$maxRows = $sheet.UsedRange.Rows.Count
for ($i = $maxRows; $i -ge 1; $i--) {
if ($sheet.Cells.Item(2, 19).Text -lt "200" ) {
$Range = $sheet.Rows.Item($i)
$Range.Delete()
}}

wenn R2 unter 200 ist wird die Tabelle gelöscht wie gewollt. Aber wenn die Tabelle über 200 ist soll er nichts löschen, es werden aber immer ca 10 zeilen trotzdem entfernt.

Kann mir jemand weiterhelfen?

Vielen Dank

Content-Key: 551804

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

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

Mitglied: 143127
143127 Feb 26, 2020 updated at 11:23:50 (UTC)
Goto Top
.Text -lt "200"
Naja, wenn ich Birnen mit Bananen vergleiche wundert das nicht 🙃.
.Value2 -lt 200

Du vergleichst hier zwei Strings mit einem numerischen Vergleichsoperator (-lt), dat klappt ned.
Member: erikro
erikro Feb 26, 2020 at 11:25:28 (UTC)
Goto Top
Moin

Zitat von @143127:

.Text -lt "200"
Naja, wenn ich Birnen mit Bananen vergleiche wundert das nicht 🙃.
> .Value2 -lt 200
> 

Du vergleichst hier zwei Strings mit einem numerischen Vergleichsoperator (-lt), dat klappt ned.

Doch, das klappt wunderbar und deshalb werden ja auch zehn Zeilen gelöscht. Man muss nur wissen, wie das funktioniert:

1000 -lt 200 => $false
"1000" -lt "200" => $true  

Liebe Grüße

Erik
Mitglied: 143127
143127 Feb 26, 2020 updated at 12:56:47 (UTC)
Goto Top
1000" -lt "200" => $true
Schon klar, ist aber eben kein "numerischer" Vergleich mehr sondern ein Vergleich der Strings nach der jeweiligen Locale Konvention, mehr wollte ich damit nicht ausdrücken.
1000 ist ja auch nicht kleiner als 200, bringt somit ein falsches Ergebnis..
Member: colinardo
Solution colinardo Feb 26, 2020 updated at 16:08:50 (UTC)
Goto Top
Servus
if($sheet.Range("R2").Value() -lt 200){   
    write-host "Less than 200, removing table." -F Green  
    $sheet.UsedRange.Offset(2,0).EntireRow.Delete()
}
Grüße Uwe
Member: colinardo
colinardo Mar 06, 2020 at 15:00:50 (UTC)
Goto Top
An den TO:
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und Lösungen markieren. Merci.