次のような文字列を含む Excel 列があります: ABC-1234-GLK-1234-10TH8E10-21 71-D 変数に値 GL-1234 (2 番目のダッシュと 4 番目の間の部分文字列) を与える必要があります。私は試した
x=Mid(string, 10, 8)
しかし問題は、すべての文字列が同じ長さであるとは限らないことですが、唯一の定数は、必要な部分文字列が 2 番目と 4 番目のダッシュの間にあることです。
何か案は?
文字列を分割し、必要なものを抽出します。
Dim dataSplit() As String
Dim dataString As String
dataSplit = Split(Sheet1.Range("C14").Value2, "-")
dataString = dataSplit(2) & "-" & dataSplit(3)
次のことを試すことができますが、これが最もエレガントで最も簡単な解決策ではないと思います。
x = ""
p1 = InStr(1, string, "-")
If p1 <> 0 Then
p2 = InStr(1 + p1, string, "-")
If p2 <> 0 Then
p3 = InStr(1 + p2, string, "-")
If p3 <> 0 Then
p4 = InStr(1 + p3, string, "-")
If p4 <> 0 Then
x = Mid(string, p2 + 1, p4 - p2 - 1)
End If
End If
End If
End If
これは 2 番目のダッシュと 4 番目のダッシュを返します。B1 は文字列です: ABC-1234-GLK-1234
=MID(B1,FIND("-",B1,FIND("-",B1)+1),FIND("-",B1,FIND("-",B1,FIND("-",B1,FIND("-",B1)+1)+1)+1) - FIND("-",B1,FIND("-",B1)+1))