'FIND와 ISNUMBER 로 원하는 결과 도출'에 해당되는 글 1건

728x90

FIND와 ISNUMBER 로 원하는 결과 도출





FIND(찾는값, 찾는 값이 들어간 셀,시작위치) = 찾는 값이 들어간 셀의 시작점 위치를 반환

  - FIND 함수는 대문자, 소문자를 구분하여 값을 찾습니다. 한글, 영문 구분없이 문자 하나를 1로 인식합니다. 

  - FINDB 함수는 대문자, 소문자를 구분하여 값을 찾는데, 영문 문자는 1, 한글 문자는 2로 인식합니다.

  - 대문자, 소문자 구분없이 찾고자 한다면 SEARCH 함수를 이용하면 됩니다.


ISNUMBER(식) : 식이 숫자이면 참, 아니면 거짓을 반환합니다.


IF함수는 IF(조건식,참,거짓) 입니다.

조건식에 IF(ISNUMBER(식),참,거짓) 으로 표시하면 원하는 결과를 찾을 수 있습니다.


=IF(ISNUMBER(FIND("유도등",B2)),"피난시설",IF(ISNUMBER(FIND("소화기",B2)),"소화시설",IF(FIND("감지기",B2),"경보시설","")))



수식이 간단하네요.


그런데 만약 데이타가 엄청 많다면 이런 함수식 많이 써주면 속도문제, 용량문제가 발생할 수 있습니다.

이럴 경우에는 아래 VBA Code를 사용하면 좋습니다.


Search_Character.vbs


Option Explicit
Sub Search_Character()
    Dim rngAll As Range         '// 검사할 구간 변수
    Dim rngTarget As Range      '//대상 범위 지정변수
    Dim rngC As Range
    Dim oldTime As Single       '// 걸린 시간 구하는 변수 지정
  
    Application.ScreenUpdating = False  '//화면 업데이트 일시 정지

      '// 이걸 지정해주어야 매우 빠르게 처리함
    oldTime = Timer     '// 시간 변수 설정
    Set rngAll = Range([B2], Cells(Rows.Count, "B").End(3))

      '// 검사할 열이 B열인 경우, B2열 시작점, 끝점은 자동감지
    Set rngTarget = Range([D2], Cells(Rows.Count, "D").End(3))

      '// 결과를 보여줄 열 범위 지정
    rngTarget.Clear    '// 셀 초기화
  
    For Each rngC In rngAll
        If InStr(rngC.Value, "유도등") > 0 Then
            rngC.Offset(0, 2).Value = "피난시설"
        ElseIf InStr(rngC.Value, "소화기") > 0 Then
            rngC.Offset(0, 2).Value = "소화시설"
        ElseIf InStr(rngC.Value, "감지기") > 0 Then
            rngC.Offset(0, 2).Value = "경보시설"
        Else
            rngC.Offset(0, 2).ClearContents
        End If
    Next rngC
  
    Set rngAll = Nothing '// 변수 초기화
    MsgBox "총 " & Format(Timer - oldTime, "#0.00") & " : 초 소요"
End Sub


예제 샘플 파일입니다.


FIND_ISNUMBER.xlsm


블로그 이미지

Link2Me

,