abc = Sheets("02").Range("calc02").Value // value is: Rabat 5%
xR = Mid(abc, 7, 1) // Result is: 5
これは問題ありませんが、内容が次の場合はどうなりますか: Rabat 50% または Rabat 100%
1 桁、2 桁、3 桁のいずれであっても、この数値のみを抽出したいと考えています。
正規表現を使用します。
var number = Regex.Match(abc, "[0-9]+");
xR = Mid$(abc, 7) ' Returns 5% or 50% etc
xR = Left$(xr, Len(xR)) - 1) ' strips the %
または、xR を数値として返したい場合
xR = Val(Mid$(abc, 7))
どうですか:
xR = Mid(abc, 7, Len(abc)-7)
文字列が常に同じであると仮定すると、動的に値を返すために文字列の長さが考慮されます。これはその形式でのみ機能しますが、それはあなたが望むもののように聞こえます:)
代わりにパーセンテージと前の単語が可変長である場合、これは機能する可能性があります。
percent = Right(abc, InStr(StrReverse(abc)," ")-1)
xR = Mid(percent, 1, Len(percent)-1)