2016-05-02 9 views
0

私はこれがHow to find the character after second vowel in a string in EXCEL?が広すぎることを除いて面白かったと思った。文字列の2番目の母音の後に文字を見つける方法

プラス私はそれに答えましたが、遅すぎました。

質問例えば

私の文字列がハッピーソング

であれば出力は

Pでなければなりません。

が空白である場合は、 "何"

可能な解決策を表示しない

一つ式アプローチ(礼儀tikkaty

=IF(A1<>"",IFERROR(MID(A1,FIND("|",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(A1),"a","|"),"e","|"),"i","|"),"o","|"),"u","|"),FIND("|",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LOWER(A1),"a","|"),"e","|"),"i","|"),"o","|"),"u","|"))+1)+1,1),"no second vowel found"),"")

答えて

1
ここ

正規表現フリー変種です:

Function charTest(s As String) As String 
    Dim i As Integer, j As Integer, r As String 
    For i = 1 To Len(s) 
     If UCase(Mid(s, i, 1)) Like "[AEIOU]" Then j = j + 1 
     If j >= 2 Then Exit For 
    Next i 

    If j >= 2 And i < Len(s) Then r = Mid(s, i + 1, 1) 
    If r = "" Then r = "Nothing" 

    charTest = r 
End Function 

検証:

Sub test2() 
    Debug.Print charTest("abcdefghijkl") 
    Debug.Print charTest("Excellence") 
    Debug.Print charTest("Animal") 
    Debug.Print charTest("The guppy pond") 
    Debug.Print charTest("The smallest bike") 
    Debug.Print charTest("Shea") 
End Sub 


L
M
P
L
なしF

3

可能VBA UDFソリューション:

テストコード

Sub test() 
Debug.Print StrOut("The Happy Song") 
Debug.Print StrOut("The Gypsy") 
Debug.Print StrOut("1234") 
End Sub 

UDF

Function StrOut(strIn As String) As String 
Dim objRegex As Object 
Dim objRegexM As Object 
Set objRegex = CreateObject("vbscript.regexp") 
With objRegex 
    .Pattern = "[aeiou].*?[aeiou](.)" 
    If .test(strIn) Then 
     Set objRegexM = .Execute(strIn) 
     strOut = objRegexM(0).submatches(0) 
    Else 
     StrOut = "Nothing" 
    End If 
End With 
End Function 
+1

追加 '.IgnoreCase = true'を、 "動物" 及び "優秀"(または任意の単語と単語のようなそれ以外の場合大文字の母音)が間違った結果を得る。 – Vegard

+0

@vegard指定されていないので間違っているかもしれません。 – brettdj