Excelã»VBAã®InStr颿°ãšã¯ãããæååã®äžããæå®ããæååãæ€çŽ¢ããæåã«èŠã€ãã£ãæåã®äœçœ®ãè¿ãæåååŠç颿°ã§ãã
VBAã§ã¯äœ¿çšããé »åºŠãé«ãããéèŠãªé¢æ°ã«ãªããŸãã
InStr颿°ã¯ããæååã®äžã«æå®ã®æååãå«ãŸããŠãããæ€çŽ¢ããå Žåã«äœ¿çšããã±ãŒã¹ãå€ã颿°ã§ããã
ãã®èšäºã§ã¯ãInStr颿°ã«ã€ããŠã
- ãInStr颿°ãã®åºæ¬çãªäœ¿ãæ¹
- ãInStr颿°ãã®æ§æ
- ãInStr颿°ãã®è¿ãå€
ãæåã«èª¬æããŸãããã®åŸã
- æ€çŽ¢ããæååããªãå Žåã«ã¯ã¡ãã»ãŒãžã衚瀺ãããæ¹æ³
- æ€çŽ¢ããæååãæ€çŽ¢å¯Ÿè±¡ã®æååã«è€æ°ããå Žåã«ã©ããªãã®ã
- 倧æåãšå°æåãåºå¥ããªãã§æ€çŽ¢ããæ¹æ³
- 倧æåãšå°æåãšå šè§åè§ãåºå¥ããªãã§æ€çŽ¢ããæ¹æ³
- InStr颿°ã䜿çšãã䟿å©ãªããã°ã©ã
ãªã©å°ãå¿çšçãªå 容ã玹ä»ããŠãããŸãã
InStr颿°ã®äœ¿ãæ¹
InStr颿°ãšã¯ã
æ»ãå€ã¯Variantåã«ãªããŸãã
InStr颿°ã¯ä»¥äžã®ããã«èšè¿°ããŠäœ¿çšããŸãã
ããã§äžäŸã玹ä»ããŸãã
äŸãã°ã以äžã®ããã«èšè¿°ãããšããŸãã
ãã®å Žåã®è¿ãå€ã¯ã©ã®ããã«ãªãã§ããããã
ãã®ããã°ã©ã ã§ã¯ãæååâABCDEFGâã®äžããæååâCâãæ€çŽ¢ããâCâãèŠã€ãã£ãäœçœ®ã®çªå·ãè¿ããŠããŸãã
æååâABCDEFGâã«ãããŠâCâã¯3çªç®ã«ãããŸããããã®ãããInStr(âABCDEFGâ, âCâ)ã®è¿ãå€ã¯â3âã«ãªããŸãã
ãã€ã³ã
InStr颿°ã¯æ€çŽ¢ããæååã«2æå以äžã®æååãæå®ããå Žåãå é ã®æåã®äœçœ®ãè¿ãå€ãšããŠè¿ããŸãã
InStr颿°ã®æ§æ
InStr颿°ã®æ§æã¯ä»¥äžã®ããã«ãªããŸãã
[]ã§å²ãŸããŠããstartãšcompareã¯çç¥å¯èœãªåŒæ°ã«ãªããŸãã
ååŒæ°ã®æå³ã«ã€ããŠèª¬æããŸãã
Start
çç¥å¯èœã§ããéåžžãæååã®å
é ããæ€çŽ¢ãããããšãå€ãã®ã§çç¥ããããšãå€ãã§ãã
æ€çŽ¢ã®éå§äœçœ®ãèšå®ããæ°åŒãæå®ããŸããçç¥ãããšãå
é ã®æåããæ€çŽ¢ãè¡ããŸãã
åŒæ°startã«Null ãå«ãŸããŠããå Žåã¯ãšã©ãŒãçºçããŸãã
åŒæ°compareãæå®ããå Žåã¯ãåŒæ°startãæå®ããå¿
èŠããããŸãã
string1
çç¥äžå¯ã§ãã
æ€çŽ¢å¯Ÿè±¡ã®æååãæå®ããŸãã
String2
çç¥äžå¯ã§ãã
æ€çŽ¢ããæååãæå®ããŸãã
compare
çç¥å¯èœã§ãã
åŒæ° compare ãæå®ããå Žåã¯ãåŒæ°start ãæå®ããå¿
èŠããããŸãã
æå忝èŒã®ã¢ãŒããæå®ããŸããçç¥ãããšããã€ããªã¢ãŒãã§æ¯èŒãè¡ããŸãã
宿° | å€ | å 容 |
vbUseCompareOption | -1 | Option Compare ã¹ããŒãã¡ã³ãã®èšå®ã䜿çšããŠæ¯èŒãè¡ããŸãã Option Compareã®èŠå®ã¯ãvbBinaryCompareã«ãªããŸãã |
vbBinaryCompare | 0 | ãã€ããªã¢ãŒãã§æ¯èŒãè¡ããŸãã ãã€ããªã¢ãŒãã§ã¯å šè§åè§ã倧æåã»å°æåãåºå¥ãããŸãã |
vbTextCompare | 1 | ããã¹ãã¢ãŒãã§æ¯èŒãè¡ããŸãã ããã¹ãã¢ãŒãã§ã¯å šè§åè§ã倧æåã»å°æåãåºå¥ãããŸããã |
*åŒæ° compareã¯å®æ°ãšå€ã©ã¡ãã䜿çšå¯èœã§ãã
InStr颿°ã®è¿ãå€
InStr颿°ã®è¿ãå€ã¯ä»¥äžã®ããã«ãªããŸãã
æ¡ä»¶ | è¿ãå€ |
åŒæ°string1ã®é·ããã0ãã®ãšã(æååã空çœââã®ãšã) | 0 |
åŒæ°string1ãNullå€ã®ãšã | Nullå€ |
åŒæ°string2ã®é·ããã0ãã®ãšã(æååã空çœââã®ãšã) | åŒæ°startã«æå®ããå€ |
åŒæ°string2ãNullå€ã®ãšã | Nullå€ |
åŒæ°string2ãåŒæ°stiring1ã«èŠã€ãããªãæ | 0 |
åŒæ°string2ãåŒæ°stiring1ã«èŠã€ãã£ãæ | æåã«æååãèŠã€ãã£ãäœçœ® |
åŒæ°startã®å€ãåŒæ°string2ã®æåæ°ãã倧ãããšã | 0 |
InStr颿°ã䜿çšããããã°ã©ã é
InStr颿°ã®äžçªã·ã³ãã«ãªããã°ã©ã
ããã°ã©ã
Sub Instr颿°01_1() Dim String1 As String Dim String2 As String String1 = "ABCDEFG" String2 = "C" MsgBox InStr(String1, String2) End Sub
ããã°ã©ã 説æ

ãŸãã
- String1 = "ABCDEFG"
- String2 = "C"
ã«ãã£ãŠã
æåå倿°String1ã«æååâABCDEFGâã代å
¥ããŠããŸããæåå倿°String2ã«æååâCâã代å
¥ããŠããŸãã
ãã®åŸ
ã§â æååABCDEFGâãšæååâCâã®æ¯èŒãè¡ããŸããâCâã¯âABCDEFGâã®3çªç®ã«ããã®ã§è¿ãå€ã¯â3âãšãªããŸãã
ãã®çµæãMsgbox颿°ã䜿çšããŠæ¯èŒçµæãç»é¢äžã«ã¡ãã»ãŒãžã衚瀺ããŠããŸãã
è£è¶³èª¬æ
ããã°ã©ã å®è¡åŸã«
ãšæ€çŽ¢å¯Ÿè±¡ã®æååãæ€çŽ¢ããæååãªã©ãã¡ãã»ãŒãžäžã«è¡šç€ºããããã«ã¯ãããã°ã©ã ã以äžã®ããã«èšè¿°ããŸãã
Sub Instr颿°01_2() Dim String1 As String Dim String2 As String Dim FindNo As Integer String1 = "ABCDEFG" String2 = "C" FindNo = InStr(String1, String2) MsgBox String1 & "ã®" & FindNo & "æåç®ã«" & String2 & "ãããã" End Sub
æ€çŽ¢æåããªãå Žåã«ã¯ã¡ãã»ãŒãžã衚瀺
ããã°ã©ã
Sub Instr颿°01_3() Dim String1 As String Dim String2 As String String1 = "ABCDEFG" String2 = "1" If InStr(String1, String2) = 0 Then MsgBox String1 & "ã«" & String2 & "ããªãã" Else MsgBox String1 & "ã®" & FindNo & "æåç®ã«" & String2 & "ãããã" End If End Sub
ããã°ã©ã 説æ

ãæ€çŽ¢å¯Ÿè±¡ã®æååãã«ãæ€çŽ¢ããæååãããªãå Žåã«ã¯InStr颿°ã¯0ãè¿ããŸãã
ãã®ããIfæã䜿çšããããšã§ãæ€çŽ¢æåããªãå Žåã«ã¯ã¡ãã»ãŒãžã衚瀺ããããšãã§ããŸãã
ãã®ããã°ã©ã ã§ã¯
- æ€çŽ¢å¯Ÿè±¡ã®æååïŒ"ABCDEFG"
- æ€çŽ¢ããæååïŒ"1"
ãšããŠããŸãã
æåå"ABCDEFG"ã«æååâ1âã¯ãããŸãããããã®ãããInStr颿°ã¯0ãè¿ããŸãã
InStr颿°ã®è¿ãå€ã0ã®å Žåã«ã¯ã
ãšãMsgBox颿°ã䜿çšããŠç»é¢äžã«ã¡ãã»ãŒãžã衚瀺ããŠããŸãã
æ€çŽ¢ããæååãæ€çŽ¢å¯Ÿè±¡ã®æååã«è€æ°ããå Žå
ããã°ã©ã
Sub Instr颿°02_1() Dim String1 As String Dim String2 As String String1 = "ABCABCABCABC" String2 = "C" MsgBox InStr(String1, String2) End Sub
ããã°ã©ã 説æ
InStr颿°ã¯æåã«æååãèŠã€ãã£ãäœçœ®ãè¿ãå€ãšããŸãã
ãã®ããã
- æ€çŽ¢å¯Ÿè±¡ã®æååïŒâABCABCABCABC"
- æ€çŽ¢ããæååïŒ"C"
ãšããå ŽåãæååâABCABCABCABC"ã«ã¯æååâCâã3çªç®ã6çªç®ã9çªç®ã12çªç®ãš4ã€å«ãŸããŠããŸãããInStr颿°ã¯æåã®æååâCâãåºãŠããâ3âãè¿ãå€ãšããŠè¿ããŸãã
è£è¶³èª¬æ
以äžã®ããã°ã©ã ã§ã¯ãæ€çŽ¢å¯Ÿè±¡ã®æååã®äžã«æ€çŽ¢ããæååãäœåå«ãŸããŠãããã調ã¹ãããšãã§ããŸãã
Sub Instr颿°02_2() Dim N As Long Dim cnt As Long Dim String1 As String Dim String2 As String String1 = "ABCABCABCABC" String2 = "C" N = InStr(N + 1, String1, String2) Do While N > 0 cnt = cnt + 1 N = InStr(N + 1, String1, String2) Loop MsgBox String1 & "ã¯" & String2 & "ã" & cnt & "åããã" End Sub
æååã®äžã«"C"ã®æåãããã°ã10è¡ç®ã®
ã«ãããŠNã0以å€ãšãªããŸãããã®çµæã
ã®äžã®ããã°ã©ã ãå®è¡ãããŸãã
å®è¡ãããå Žåã«ã¯ãæ¬¡ã®æ€çŽ¢ã®éå§äœçœ®ãå€ããããã13è¡ç®ã®
ã§Nã®å€ãæŽæ°ããŠããŸãã
倧æåãšå°æåãåºå¥ããªãã§æ€çŽ¢ããå Žå
ããã°ã©ã
Sub Instr颿°03() Dim String1 As String Dim String2 As String String1 = "abcdefg" String2 = "C" '倧æåãšå°æåãåºå¥ MsgBox InStr(String1, String2) '倧æåãšå°æåãåºå¥ããªã MsgBox InStr(UCase(String1), UCase(String2)) End Sub
ããã°ã©ã 説æ

InStr颿°ã§ã¯å€§æåãšå°æåãåºå¥ãããŸãããã®ããã
- æ€çŽ¢å¯Ÿè±¡ã®æååïŒâabcdefg"
- æ€çŽ¢ããæååïŒ"C"
ãšããå Žåãæååâabcdefg"ã®äžã«å€§æåã®âCâã¯ãªããããInStr颿°ã®è¿ãå€ã¯â0âãšãªããŸãã
ã§ã¯å€§æåãšå°æåãåºå¥ããªãã§æ€çŽ¢ããã«ã¯ã©ã®ããã«ããã°ããã§ããããã
å°æåã倧æåã«ããŸãã¯ã倧æåãå°æåã«å€æããã°ããã®ã§ãã
ãã®ããã«å€§æåâå°æåãšå€æãã颿°ãšããŠã¯
- Ucase颿°
- LCase颿°
- StrConv颿°
ãããã®ã§ããããã®é¢æ°ãšInStr颿°ãçµã¿åãããŠäœ¿çšããã°å€§æåãšå°æåãåºå¥ããªãã§æ€çŽ¢ããããšãã§ããŸãã
äžã®ããã°ã©ã äŸã§ã¯ã
ã®ç®æã§Ucase颿°ã䜿çšããŠãæååãå šãŠå€§æåã«å€æããŠæ€çŽ¢ãè¡ã£ãŠããŸãã
ãã€ã³ã
InStr(UCase(String1), UCase(String2))
ã®ç®æã¯
InStr(1, String1, String2, 1)
ãšããŠãOKã§ããåŒæ°compareãvbTextCompare(ãããã¯â1â)ãšããŠãããã¹ãã¢ãŒãã§æ¯èŒããããã«ããã°å
šè§åè§ã倧æåå°æåãåºå¥ãããªãã§æ€çŽ¢ãè¡ãããšãã§ããŸãã
倧æåãšå°æåãšå šè§åè§ãåºå¥ããªãã§æ€çŽ¢ããå Žå
ããã°ã©ã
Sub Instr颿°04() Dim String1 As String Dim String2 As String String1 = "ABCabc" String2 = "" '倧æåãšå°æåãåºå¥ MsgBox InStr(String1, String2) '倧æåãšå°æåãåºå¥ããªã MsgBox InStr(UCase(String1), UCase(String2)) '倧æåãšå°æåãšå šè§åè§ãåºå¥ããªã MsgBox InStr(StrConv(UCase(String1), vbNarrow), StrConv(UCase(String2), vbNarrow)) MsgBox InStr(1, String1, String2, vbTextCompare) MsgBox InStr(1, String1, String2, 1) End Sub
ããã°ã©ã 説æ

InStr颿°ã§ã¯å€§æåãšå°æåã ãã§ãªãå
šè§åè§ãåºå¥ãããŸãã
ãã®ããã
- æ€çŽ¢å¯Ÿè±¡ã®æååïŒâ ABCabc"
- æ€çŽ¢ããæååïŒ""
ãšããå Žåãæååâ ABCabc"ã®äžã«å šè§å€§æåã®âCâã¯9çªç®ã«ãããããInStr颿°ã®è¿ãå€ã¯â9âãšãªããŸãã3æåç®ã®åè§å€§æåã®âCâãæ€çŽ¢ããããšãã§ããªãã®ã§ãã
ã§ã¯å šè§åè§ãåºå¥ããã«æ€çŽ¢ããã«ã¯ã©ã®ããã«ããã°ããã§ããããã
ã䜿ããŸãã
äžã®ããã°ã©ã äŸã§ã¯
ã®ç®æã§æååãå šãŠåè§å€§æåã«å€æããŠæ€çŽ¢ãè¡ã£ãŠããŸãã
ãã€ã³ã
InStr(StrConv(UCase(String1), vbNarrow), StrConv(UCase(String2), vbNarrow))
ã®ç®æã¯
InStr(1, String1, String2, 1)
ãšããŠãOKã§ããåŒæ°compareãvbTextCompare(ãããã¯â1â)ãšããŠãããã¹ãã¢ãŒãã§æ¯èŒããããã«ããã°å
šè§åè§ã倧æåå°æåãåºå¥ãããªãã§æ€çŽ¢ãè¡ãããšãã§ããŸãã
InStr颿°ã䜿çšãã䟿å©ãªããã°ã©ã é
Aåã«âæ ªåŒäŒç€Ÿâã®æåãããå Žåã«Båã«æ ªåŒäŒç€Ÿãä»£å ¥
ããã°ã©ã
Sub Instr颿°05() Dim i As Long Dim MaxRow As Long MaxRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To MaxRow If InStr(Cells(i, 1), "æ ªåŒäŒç€Ÿ") > 0 Then Cells(i, 2) = "æ ªåŒäŒç€Ÿ" End If Next End Sub
ããã°ã©ã 説æ

Aåã«ç€Ÿåãå ¥ã£ãŠããã瀟åã«ãæ ªåŒäŒç€Ÿããå«ãŸããŠããå Žåã«Båã«ãæ ªåŒäŒç€Ÿããåºåããããã°ã©ã ã«ãªããŸãã
Aåã«ããã¡ãŒã«ã¢ãã¬ã¹ã®@ã®å(ã¢ã«ãŠã³ã)ãBåã«ã@ã®åŸ(ãã¡ã€ã³)ãCåã«ä»£å ¥ããããã°ã©ã
ããã°ã©ã
Sub Instr颿°06() Dim i As Long Dim MaxRow As Long Dim FindNo As Long MaxRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To MaxRow FindNo = InStr(Cells(i, 1), "@") Cells(i, 2) = Left(Cells(i, 1), FindNo - 1) '@ããåã®æåå' Cells(i, 3) = Right(Cells(i, 1), Len(Cells(i, 1)) - FindNo) '@ããåŸã®æåå' 'Cells(i, 3) = Mid(Cells(i, 1), FindNo + 1) 'Mid颿°ã§ãã§ãã Next End Sub
ããã°ã©ã 説æ

ã¡ãŒã«ã¢ãã¬ã¹ã®æŽçãªã©ã§äŸ¿å©ãªããã°ã©ã ã§ãããŸãã
ã§æååâ@âã®äœçœ®ã倿°FindNoã«ä»£å ¥ããŠããŸãã
@ã®å(ã¢ã«ãŠã³ã)ã®æååãBåã«ä»£å ¥ããæ¹æ³
äžã®ããã°ã©ã (11è¡ç®)ã§è¡ã£ãŠããŸãã
@ã®åã®æååãåãåºãããã«ã¯ãLeft颿°ã䜿çšããŸããæ€çŽ¢å¯Ÿè±¡ã®æååã®å·Šãã
ãæãåºããããInStrã§ååŸãã@ã®äœçœ®(FindNo)ãã1ãåŒããæåæ°ãæå®ããŠããŸãã
@ã®åŸ(ãã¡ã€ã³)ã®æååãCåã«ä»£å ¥ããæ¹æ³
äžã®ããã°ã©ã (12è¡ç®)ã§è¡ã£ãŠããŸãã
@ã®åŸã®æååãåãåºãããã«ã¯ãRignt颿°ã䜿çšããŸããæ€çŽ¢å¯Ÿè±¡ã®æååã®å³ãã
ãæãåºãå¿
èŠããããŸãã
ãã®ãããå
šæåæ°ãååŸããLen颿°ã䜿çšããŠããŸãã
ãã€ã³ã
Mid颿°ã§ã@ã®åŸ(ãã¡ã€ã³)ã®æååååŸããããšãã§ããŸãã
Mid颿°ã䜿çšããå Žåã«ã¯ã
Mid(Cells(i, 1), FindNo + 1)ãšããŸãã
èåãšååãåããããã°ã©ã
ããã°ã©ã
Sub Instr颿°07() Dim i As Long Dim MaxRow As Long Dim FindNo As Long Dim ReplaceString As String MaxRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To MaxRow ReplaceString = Replace(Cells(i, 1), "ã", " ") FindNo = InStr(ReplaceString, " ") Cells(i, 2) = Left(ReplaceString, FindNo - 1) '@ããåã®æåå' Cells(i, 3) = Right(ReplaceString, Len(ReplaceString) - FindNo) '@ããåŸã®æåå' 'Cells(i, 3) = Mid(ReplaceString, FindNo + 1) 'Mid颿°ã§ãã§ãã Next End Sub
ããã°ã©ã 説æ

人åã®æŽçãªã©ã§äŸ¿å©ãªããã°ã©ã ã§ãã
èåãšååã®éã«ã¯å šè§ã¹ããŒã¹ãå ¥ãããšãããã°ãåè§ã¹ããŒã¹ãå ¥ãããšããããŸãã
ãã®ããããŸãã
ã§Cells(i, 1)ã«æ ŒçŽãããŠãã人åã«å¯ŸããŠãå šè§ã¹ããŒã¹ãåè§ã¹ããŒã¹ã«å€æãããã®ãæåå倿°ReplaceStringã«ä»£å ¥ããŠãŸãã
ãã®åŸã¯ãæåå倿°ReplaceStringå ã®åè§ã¹ããŒã¹ã®äœçœ®ã
ã§ååŸããŠããŸãã
ãã®ä»ã®ããã°ã©ã ã¯ãAåã«ããã¡ãŒã«ã¢ãã¬ã¹ã®@ã®å(ã¢ã«ãŠã³ã)ãBåã«ã@ã®åŸ(ãã¡ã€ã³)ãCåã«ä»£å ¥ããããã°ã©ã ããšåãã§ãã