2016-11-18 2 views
0

작동하는 온라인 코드를 발견했지만 그 목적을 변경하지 못했습니다. 내 스프레드 시트의 각 항목에는 오류 메시지가있는 셀을 비워 두는 목적으로 다른 수식과 함께 Iferror 함수가 포함되어 있습니다. 예를 들어 셀 E3이 특정 수식을 사용하여 셀 F3에 종속되어 있다고 가정 해 봅니다 (설명을 위해 F3/2.5라고 말하면됩니다). 셀 F3에 항목이 없으면 E3 셀에 오류 메시지가 표시됩니다. 이러한 이유로, IFERROR 함수를 사용하여 셀을 비어있는 것으로 표시합니다. 매크로 버튼을 클릭 한 후 빈 행을 삭제하려고 할 때 문제가 발생합니다. 그러나 해당 셀에는 항목 (차례대로 오류 메시지가 반환되는 수식)이 있으므로 해당 셀은 삭제되지 않습니다. 또한이 코드를 3 가지 다른 선택 범위에서 실행해야합니다. 제발 누군가 도와 줄 수있어! 내가 찾은 코드는이 포럼의 다른 스레드에서 가져온 코드입니다.특정 조건의 특정 행을 삭제하는 Excel VBA

`sub foo() 
    dim r As Range, rows As Long, i As Long 
    Set r = ActiveSheet.Range("A1:Z50") 
    rows = r.rows.Count 
    For i = rows To 1 Step (-1) 
    If WorksheetFunction.CountA(r.rows(i)) = 0 Then r.rows(i).Delete 
    Next 
    End Sub` 

고마워요!

+1

도와 드릴 수 있도록 변경 사항을 코드에 게시 해주십시오. – RCaetano

+0

열 E를 체크하는 경우'If Cells (i, 5) .Value = ""Then r.rows (i) .Delete' –

+0

@ Tim ... 전체 범위를 체크하고 싶다면 어떻게해야합니까? – Syed

답변

0

편집 :

=SUMPRODUCT((LEN(A1:F1)>0)*1) 
: 공 i

다음과 같은 SUMPRODUCT와 스프레드 시트의 열을 설정하는 것이 좋습니다가 없었다 때 행을 삭제되면서 문은 자동 필터에 추가 한 경우

이것은 얼마나 많은 셀의 값이 0보다 길고 비어 있지 않은지 계산하는 것입니다. 따라서 가짜 데이터의 작은 샘플을 테스트 할 때 그에 맞게 셀 참조를 조정해야합니다. 가시 세포의 전체 행을

For i = rows To 1 Step (-1) 
    If Cells(i,"G") = 0 Then r.rows(i).Delete 'My formula is in column "G" 
Next 

또는 자동 필터를 설정 및 삭제 :

그냥 루프 할 수있는이 따라

Dim lrow As Integer 

If Not WorksheetFunction.CountIf(Range("G:G"), "0") = 0 Then 
Range("A1:G1").AutoFilter 
Range("A1:G1").AutoFilter Field:=7, Criteria1:="0" 
lrow = Cells(rows.Count, 7).End(xlUp).Row + 1 
Range("G2:G" & lrow).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
Range("A1:G1").AutoFilter 
End If 

에 선도적 인 열을 사용하는 유일한 문제 당신이 수식을 보충 할 필요가있을 때 많은 양의 데이터가오고가는 경우 이것을 계산하십시오. 코드에서 자동 완성을 사용할 수 있습니다.

+0

대단히 감사합니다! – Syed

관련 문제