2014-05-21 1 views
0
for ($i = 1; $i -le $somenumberofusedcellsinthecolumn; $i++) { 
    $cell = $ws.Cells.Item($i, 1) 
    $value = $cell.Value2 -as [string] 
    write-host $value 
} 

열의 다음 셀이 비어있을 때 for 루프를 종료하고 싶습니다. 비록 사람들이 엑셀 시트에 더 많은 데이터를 추가 할 수 있기 때문에 어떻게해야 할 지 모르겠다.빈 셀 전에 루프 for 중지

일부 사람들은 루프의 끝점으로 다음을 사용했지만 온라인 구현 방법을 잘 모르겠습니다.

$rows = $ws.range("c2").currentregion.rows.count 
+0

죄송합니다. 사용 된 모든 세포를 반복하려고하십니까? 아니면 특정 구역 (예 : A2 : D40 또는 무언가)을 사용하고 마지막으로 사용한 셀에서 멈 춥니 다? – TheMadTechnician

+0

@TheMadTechnician 죄송합니다. 그래, 기본적으로 사용 된 셀의 한 열을 반복하고 거기에 몇 개가 있는지 계산하여 루프를 막을 수 있습니다. – krousemw

답변

1

다음 셀의 값을 확인하면서 셀을 반복 할 수 있지만 원하는 것이 더 나은 서버는 원하는 열에서 직접 값을 가져 와서 배열에 저장하는 것입니다. B 열의 데이터에 관심이 있다고 가정 해 봅시다. 우리는 워크 시트의 Columns 속성을 선택하고 1 열을 건너 뛰고 첫 번째 다음 열 (A 건너 뛰기, B에서 값 가져 오기)을 선택합니다. 그런 다음 Value2를 확장하면됩니다.이 Value2는 이미 해당 열의 모든 사용 된 셀 값의 배열이며, 찾고있는 모든 데이터를 사용자에게 제공합니다. 이 밖으로 시도하고 당신이 그것을 좋아하는 방법을 참조하십시오

이제 $Data
$Data = $ws.Columns | Select -Skip 1 -First 1 | Select -Expand Value2 

은 B 열에서 사용 된 모든 셀을 포함하는 배열 열 C를 원하십니까입니까? 이것을 -Skip 2으로 변경하십시오. 또는 열 A를 원하면 -Skip 만 제거하면됩니다. 데이터를 얻은 후에는 화면에 출력하거나 필요에 따라 파싱하거나 파일에 저장할 수 있습니다.

0

빈 셀에 도달하면 while 루프를 수행하고 종료 할 수 있습니다.

$i=1 
$nextValue = $true 
while ($nextValue -eq $true) { 
    $cell = $ws.Cells.Item($i, 1) 
    $value = $cell.Value2 -as [string] 
    write-host $value 
    if ($ws.Cells.Item($i+1, 1).Value() -eq $Null) { 
     $nextValue = $false 
    } 
    $i++ 
} 

귀하의 목적에 맞습니까?