【VBA】 한 셀에서 특정 문자열을 추출하는 방법

3393 단어 VBAVBA 매크로Excel
이번에는 한 셀에서 특정 문자열을 추출하는 방법입니다.

아래와 같이 한 셀에 넣은 문자열 중 특정 문자열을
별도의 셀에 내보내고 싶습니다. . . 그런 때는 없을까요?

아래는 각 직업의 스테이터스를 1개의 셀에 써 버렸습니다.
여기에서 각 상태 값만 추출하고 각 상태 필드에
저장하고 싶습니다.



다음은 샘플 코드입니다.

vb. 상태 분할
Sub ステータスを分割する()

Dim txt As String

Dim i As Long

For i = 3 To 6

    With Sheets("Sheet1")

    txt = .Cells(i, 3).Value
    txt = Replace(txt, " ", "")

    .Cells(i + 9, 3) = Mid(txt, InStr(txt, "【HP】") + 4, InStr(txt, "【MP】") - InStr(txt, "【HP】") - 4)
    .Cells(i + 9, 4) = Mid(txt, InStr(txt, "【MP】") + 4, InStr(txt, "【攻撃力】") - InStr(txt, "【MP】") - 4)
    .Cells(i + 9, 5) = Mid(txt, InStr(txt, "【攻撃力】") + 5, InStr(txt, "【防御力】") - InStr(txt, "【攻撃力】") - 5)
    .Cells(i + 9, 6) = Mid(txt, InStr(txt, "【防御力】") + 5, InStr(txt, "【素早さ】") - InStr(txt, "【防御力】") - 5)
    .Cells(i + 9, 7) = Mid(txt, InStr(txt, "【素早さ】") + 5, InStr(txt, "【賢さ】") - InStr(txt, "【素早さ】") - 5)
    .Cells(i + 9, 8) = Mid(txt, InStr(txt, "【賢さ】") + 4)

    End With

Next i

End Sub

그럼, 자세한 내용을 설명하겠습니다.
Dim txt As String

Dim i As Long

우선 변수를 준비합니다. 「txt」는 추출 대상의 캐릭터 라인을 포함하는 것으로,
"i"는 각 행 수를 저장합니다.
With Sheets("Sheet1")

    txt = .Cells(i, 3).Value
    txt = Replace(txt, " ", "")

    .Cells(i + 9, 3) = Mid(txt, InStr(txt, "【HP】") + 4, InStr(txt, "【MP】") - InStr(txt, "【HP】") - 4)
    .Cells(i + 9, 4) = Mid(txt, InStr(txt, "【MP】") + 4, InStr(txt, "【攻撃力】") - InStr(txt, "【MP】") - 4)
    .Cells(i + 9, 5) = Mid(txt, InStr(txt, "【攻撃力】") + 5, InStr(txt, "【防御力】") - InStr(txt, "【攻撃力】") - 5)
    .Cells(i + 9, 6) = Mid(txt, InStr(txt, "【防御力】") + 5, InStr(txt, "【素早さ】") - InStr(txt, "【防御力】") - 5)
    .Cells(i + 9, 7) = Mid(txt, InStr(txt, "【素早さ】") + 5, InStr(txt, "【賢さ】") - InStr(txt, "【素早さ】") - 5)
    .Cells(i + 9, 8) = Mid(txt, InStr(txt, "【賢さ】") + 4)

End With

상기를, 각 행마다 처리를 해 갑니다.

With를 사용하면 With에서 지정한 시트를 생략할 수 있습니다.
이번에는 Sheets("Sheet1")을 지정하고 있으므로 ".(점)"로 시작하는 부분에서 Sheets("Sheet1")을 생략하고 있습니다.
txt = Replace(txt, " ", "")

여기는 대상 셀에 공백이 있을 경우 삭제합니다.
이번에는 불필요했지만 비망록으로 기재하고 있습니다.
.Cells(i + 9, 3) = Mid(txt, InStr(txt, "【HP】") + 4, InStr(txt, "【MP】") - InStr(txt, "【HP】") - 4)

여기에서 Mid 함수와 InStr 함수를 사용하여 추출할 문자열을 지정하고,
값을 셀에 저장합니다.
Mid 및 InStr 함수에 대해서는 아래 문서를 참조하십시오.

Mid 함수
htps //w w. 치 ps 후응 d. 코 m / v 바 / 05 미 d

InStr 함수
htps //w w. 치 ps 후응 d. 이 m/v바/05인 str
For i = 3 To 6

그리고, For문으로 추출 대상의 행수분 루프 처리를 해 완료입니다.

이상, 한 셀에서 특정 문자열을 추출하는 방법이었습니다.

좋은 웹페이지 즐겨찾기