5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴
해결 M365윈도우10

WorksheetFunction.Filter 에러

쌈타
11월 19일 조회 1,265
노란색부분이 " '13'런타임 오류가 발생하였습니다:형식이 일치하지 않습니다. " 이렇게 에러 나는데 어떻게 작성해야 하나요?

Sub 매크로1()
Set myRange = Worksheets("테이블").Range("A2:H15")
Set fRange = Worksheets("테이블").Range("b2:b15")
For i = 1 To 5
Sheets.Add after:=Sheets(i)
Worksheets("테이블").Select
k = Cells(i, 15).Value
Sheets(i + 1).Name = k
Worksheets("테이블").Range("a1:h1").Copy
Sheets(i + 1).Activate
Cells(1, 1).Select
ActiveSheet.Paste
Cells(2, 1) = WorksheetFunction.Filter(myRange, fRange = k)
Cells(1, 1).Select
Next
Application.CutCopyMode = False
End Sub

 

댓글 4

원조백수 11월 19일
Filter()함수가  원본 영역의 일치하는 행 자료를 모두 가져온다고 한다면,

Cells(2, 1) 이라는 셀 값에 Filter의 결과 Array를 넣으려고 해서 오류가 나는 거 아닐까요?

Cell의 값을 설정하려면, 단일 값으로 넣어야 하지 않을까 싶습니다.
쌈타 작성자 11월 19일
@원조백수 님 아래와 같이 바꿔도 같은 에러가 발생하네요.

Sub 매크로1()
Dim g
Set myRange = Worksheets("테이블").Range("A2:H15")
Set fRange = Worksheets("테이블").Range("b2:b15")
For i = 1 To 5
Sheets.Add after:=Sheets(i)
Worksheets("테이블").Select
k = Cells(i, 15).Value
Sheets(i + 1).Name = k
Worksheets("테이블").Range("a1:h1").Copy
Sheets(i + 1).Activate
Cells(1, 1).Select
ActiveSheet.Paste
g = WorksheetFunction.Filter(myRange, fRange = k)
Next
Application.CutCopyMode = False
End Sub
원조백수 채택된 답변 11월 19일
@쌈타 님 이게 아니라면 Filter 함수의 두번째 인수가 Include 가 "A Boolean array whose height or width is the same as the array" 이렇게 설명되어 있는 것으로 봐서는 Boolean 형 Array를 만들어서 넣어 주어야 하지 않나 싶습니다.

그럼 fRange=k 를 Array하나 선언하시고, For,,, Next 문으로 각각의 결과를 True/False로 넣어서 그 Array변수를 넣어야 할 듯 합니다.

영문이지만 여길 참고해 보세요.

https://stackoverflow.com/a/65654875 
쌈타 작성자 11월 19일
@원조백수 님 감사합니다. 고민해 보겠습니다.

질문답변 게시판의 최근 글

스크랩 완료