이 기사에서는 VBA를 사용하여 특정 값과 같지 않은 값을 자동 필터링하는 방법을 보여 드리겠습니다. 엑셀에서. 선택한 셀 범위와 전체 워크시트에서 값을 자동 필터링하는 방법을 배웁니다.
Excel에서 VBA를 사용하여 특정 값과 같지 않은 자동 필터 값(빠른 보기)
Sub Autofilter_Values_from_Whole_Worksheet()
Source_Worksheet = "Sheet1"
Destination_Worksheet = "Sheet2"
Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)
Value_Column = 3
Value = "F"
Row_Count = 1
Column_Count = 1
For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count
If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then
For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j))
Column_Count = Column_Count + 1
Next j
Row_Count = Row_Count + 1
Column_Count = 1
End If
Next i
End Sub
2 Excel에서 VBA를 사용하여 특정 값과 같지 않은 값을 자동 필터링하는 데 적합한 방법
더 이상 지체하지 않고 오늘 본론으로 가자. 먼저 전체 워크시트에서 값을 자동 필터링한 다음 워크시트의 특정 범위에서 값을 자동 필터링합니다.
1. 전체 워크시트의 특정 값과 같지 않은 값 자동 필터링
우선 Excel VBA를 사용하여 전체 워크시트의 특정 값과 같지 않은 값을 자동 필터링하는 방법을 배웁니다. .
여기에 Sheet1이라는 워크시트가 있습니다. 일부 학생의 이름이 포함된 , 표시 시험에서, 그리고 그들의 등급 . 데이터 세트는 A1 셀에서 바로 시작됩니다. .
우리의 목표는 F 등급이 아닌 학생을 자동 필터링하는 것입니다. Sheet2라는 워크시트에서 .
⧪ 1단계:입력 삽입
먼저 코드에 입력을 삽입해야 합니다. 여기에는 소스 워크시트(Sheet1)의 이름이 포함됩니다. , 대상 워크시트(Sheet2) , 필터링될 열(1, 3) , 특정 값이 있는 열(3) 및 특정 값(F) .
Source_Worksheet = "Sheet1"
Destination_Worksheet = "Sheet2"
Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)
Value_Column = 3
Value = "F"
⧪ 2단계:For 루프로 값 자동 필터링
다음으로 for-loop를 반복하여 소스 워크시트의 값을 대상 워크시트로 자동 필터링합니다. .
Row_Count = 1
Column_Count = 1
For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count
If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then
For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j))
Column_Count = Column_Count + 1
Next j
Row_Count = Row_Count + 1
Column_Count = 1
End If
Next i
따라서 완전한 VBA 코드는 다음과 같습니다.
⧭ VBA 코드:
Sub Autofilter_Values_from_Whole_Worksheet()
Source_Worksheet = "Sheet1"
Destination_Worksheet = "Sheet2"
Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)
Value_Column = 3
Value = "F"
Row_Count = 1
Column_Count = 1
For i = 1 To Worksheets(Source_Worksheet).UsedRange.Rows.Count
If Worksheets(Source_Worksheet).UsedRange.Cells(i, Value_Column) <> Value Then
For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
Worksheets(Destination_Worksheet).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).UsedRange.Cells(i, Filtered_Columns(j))
Column_Count = Column_Count + 1
Next j
Row_Count = Row_Count + 1
Column_Count = 1
End If
Next i
End Sub
<강한>
⧭ 출력:
필요에 따라 입력을 변경한 다음 코드를 실행합니다(먼저 Sheet2 또는 대상 워크시트로 사용할 수 있습니다. , 코드를 실행합니다. 그렇지 않으면 오류가 표시됩니다.).
데이터 세트의 특정 열(열 1 및 3 이 예에서) 특정 값(F)과 같지 않은 값만 포함하는 대상 워크시트로 자동 필터링됨 이 예에서는).
자세히 알아보기: VBA에서 Excel의 동일한 필드에 대해 여러 기준으로 자동 필터링(4가지 방법)
2. Excel VBA를 사용하여 특정 셀 범위의 특정 값과 같지 않은 값 자동 필터링
Excel VBA의 전체 워크시트에서 특정 값과 같지 않은 값을 자동 필터링하는 방법을 배웠습니다. .
이제 특정 범위의 값을 자동 필터링하는 방법을 알아보겠습니다.
여기에 Sheet3이라는 워크시트가 있습니다. 일부 학생의 이름을 다시 포함합니다. , 표시 시험에서, 그리고 그들의 등급 . 하지만 이번에는 데이터 세트가 B3 셀에서 시작됩니다. 최대 셀 D15 .
이번에는 F 등급이 아닌 학생을 자동 필터링하는 것이 목표입니다. 동일한 워크시트의 F3 셀 .
⧪ 1단계:입력 삽입
먼저 코드에 입력을 삽입해야 합니다. 이번에는 소스 워크시트(Sheet3)의 이름이 포함됩니다. , 대상 워크시트(Sheet3) , 대상 셀 (F3 ), 필터링될 열(1, 3) , 특정 값이 있는 열(3) 및 특정 값(F) .
Source_Worksheet = "Sheet3"
Source_Range = "B3:D15"
Destination_Worksheet = "Sheet3"
Destination_Cell = "F3"
Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)
Value_Column = 3
Value = "F"
⧪ 2단계:For 루프로 값 자동 필터링
다음으로 for-loop를 반복하여 값을 자동 필터링합니다. .
Row_Count = 1
Column_Count = 1
For i = 1 To Worksheets(Source_Worksheet).Range(Source_Range).Rows.Count
If Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Value_Column) <> Value Then
For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
Worksheets(Destination_Worksheet).Range(Destination_Cell).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Filtered_Columns(j))
Column_Count = Column_Count + 1
Next j
Row_Count = Row_Count + 1
Column_Count = 1
End If
Next i
따라서 완전한 VBA 코드는 다음과 같습니다.
⧭ VBA 코드:
Sub Autofilter_Values_from_Specific_Range()
Source_Worksheet = "Sheet3"
Source_Range = "B3:D15"
Destination_Worksheet = "Sheet3"
Destination_Cell = "F3"
Dim Filtered_Columns() As Variant
Filtered_Columns = Array(1, 3)
Value_Column = 3
Value = "F"
Row_Count = 1
Column_Count = 1
For i = 1 To Worksheets(Source_Worksheet).Range(Source_Range).Rows.Count
If Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Value_Column) <> Value Then
For j = LBound(Filtered_Columns) To UBound(Filtered_Columns)
Worksheets(Destination_Worksheet).Range(Destination_Cell).Cells(Row_Count, Column_Count) = Worksheets(Source_Worksheet).Range(Source_Range).Cells(i, Filtered_Columns(j))
Column_Count = Column_Count + 1
Next j
Row_Count = Row_Count + 1
Column_Count = 1
End If
Next i
End Sub
⧭ 출력:
입력을 변경한 후 코드를 실행합니다(대상 워크시트를 만드는 것을 잊지 마세요. 다른 경우 먼저, 그렇지 않으면 오류가 발생합니다.).
데이터 세트의 특정 열(열 1 및 3 이 예에서는 대상 셀로 자동 필터링됨(F3 이 예에서는 특정 값(F)과 같지 않은 값만 포함하는 대상 워크시트의 이 예에서는).
자세히 알아보기: [수정]:범위 클래스의 자동 필터 방법 실패(5개 솔루션)
기억해야 할 사항
값을 새 워크시트로 자동 필터링하는 코드를 실행하기 전에 해당 워크시트를 만듭니다. 그렇지 않으면 오류가 발생합니다.
또한 여기에서는 UsedRange를 사용했습니다. VBA 속성 전체 워크시트에서 값을 자동 필터링합니다. 클릭하시면 자세히 알 수 있습니다.
결론
따라서 다음은 VBA를 사용하여 특정 값과 같지 않은 값을 자동 필터링하는 방법입니다. 엑셀에서. 질문있으세요? 언제든지 문의해 주세요. ExcelDemy 사이트를 방문하는 것도 잊지 마세요. 더 많은 게시물과 업데이트를 확인하세요.
관련 기사
- 자동 필터가 켜져 있는지 확인하는 Excel VBA(4가지 쉬운 방법)
- VBA 자동 필터:작은 것부터 큰 것 순으로 정렬(3가지 방법)
- Excel VBA로 보이는 행을 자동 필터링 및 복사하는 방법
- Excel VBA:자동 필터가 있는 경우 제거(7가지 방법)