Bir Excel dosyasını, herhangi bir değere sahip olması gereken belirli bir değer ("# N/A", başarısız bir VLOOKUP'tan) araması yapan bir PowerShell betiğim var. satırları SONRA ve bu satırı içeren hızlı bir şekilde silinir. Şimdiye kadar ne yaptımPowerShell - Başlangıç Satırını Bulduktan Sonra Excel'den Bir Satır Aralığı Sil
:
$sheetRange = $sheetData.UsedRange
$colRange = $sheetData.Range("F1")
[void] $sheetRange.Sort($colRange)
$fileWorking.Save()
$strFinder = "#N/A"
$rngSearch = $sheetData.Range("F1").EntireColumn
$txtFound = $rngSearch.Find($strFinder)
$RowFound = ($txtFound.Row)
for (($i = $RowFound); ($i -le $rowsTrans); $i++)
{
$currRow = $sheetData.Cells.Item($i).EntireRow
[void]$currRow.Delete()
}
$fileWorking.Save()
sorundur, 200k üzerinde satır olduğunda ve seferinde bir satır yerine tüm aralığı silmeye ihtiyacım. Bazı sözdizimi ile etrafta dolanırken, bunu gerçekleştiren doğru sözdizimini veya yöntemleri tam olarak anlayamıyorum.
Açıkçası, for
döngüsünün sadece gitmesi gerekiyor ve tüm aralığı $RowFound
ve $rowsTrans
arasında ayarlamanız gerekiyor ... ama nasıl yapıldı?
Tüm adresleri içeren birleştirilmiş bir dize oluşturabilir, sonra silmek için bunu kullanabilir misiniz? Örneğin. Aralık ... ("A2, A4, A10, A19"). AllRow.Delete' Bir aralık nesneleri birliği gibi bir dizi nesne tanımı kullanır. – Jeeped
@Jeeped Bir "grup" aralığı atadığınızda, sözdizim yanlıştı. Kendi kendime çözdüm, ama cevabım benim hatamın aynısı. Ben yapmaya çalışıyorum ... Range ("A" + $ RowFound + ": A" + $ rowTrans) (not: ":"). Yorumunuzu, açıklandığı gibi sözdizimi düzeltmek için bir cevaba dönüştürür müsün? ;) – gravity