2016-04-07 13 views
1

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ı?

+1

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

+0

@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

cevap

1

Range.Find döngüsünde çalıştırdığınız tüm adresleri içeren birleştirilmiş bir dize oluşturun. Range object'u Range.EntireRow property ile .Delete arasında tanımlamak için bunu kullanın. aralığı nesnelerin Union gibi çok çeşitli nesne tanımını kullanan

...Range("A2, A4, A10, A19").EntireRow.Delete 

.

+0

Mükemmel çözüm. Ben erken bir 'sort' işlemi yapıyorum işaret, bu yüzden her zaman her şeyi biliyorum ve ilk girişin silinmesi gereken dahil olmak üzere, ama bir sıralama yapılmadıysa, ya da bir çözüm yapılmadıysa, çözümünüz daha da iyi. t Güvenilir (olabildiğince değer bulmalıyım ve sırayla olmayabilirler). Kesinlikle ihtiyacım olanın üstünde ve ötesinde! – gravity

İlgili konular