- ベストアンサー
VBAで決められた記号より前の文字を消去するには?
Excel上に以下のような情報が記載されているとします。 a1*b1 a2*b1 c3*d2 f4*w2 このような場合において、VBA等で*の前にある文字を全て消去(以下参照)する事は可能でしょうか? ※VBA実行後 b1 b1 d2 w2
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>実際には*が付いていない行もあります。 先ほどの回答に誤りがありましたので、それも修正しました。 =RIGHT(A1,LEN(A1)-IF(ISERROR(FIND("*",A1)),0,FIND("*",A1))) とか、 =MID(A1,IF(ISERROR(FIND("*",A1)),1,FIND("*",A1)+1),LEN(A1))
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
aに文字列があるとして p=InStr(a、"*") を実行 pが0(存在しない)でないことを確かめて b=Right(a,len(a)-p)
Instr、Right を使えばOK。 この場合は、NO1さんの回答と同じ要領。 で、ここでは別のやり方を・・・。 [イミディエイト] ? CutStr("aaa*bbb", "*", 1) aaa ? CutStr("aaa*bbb", "*", 2) bbb ? CutStr("aaa//bbb//ccc", "//", 3) ccc このように、CutStr関数は、区切り文字で区切られた指定位置の文字列を抜き出します。 ということで、文字列抜き出し専用の関数を用意するのも手。 <標準モジュール> Public Function CutStr(ByVal Text As String, _ ByVal Separator As String, _ ByVal N As Integer) As String Dim strDatas() As String strDatas = Split("" & Separator & Text, Separator, , 0) CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function
補足
すみません、私の質問に不備がありました。 例文ではExcel上に記載されている情報は全て*が付いていますが、実際には*が付いていない行もあります。 お手数をおかけしますが、以上を踏まえまして再度教えて頂けませんでしょうか?
- hana-hana3
- ベストアンサー率31% (4940/15541)
関数で可能です。 =RIGHT(A1,FIND("*",A1)-1)
補足
すみません、私の質問に不備がありました。 例文ではExcel上に記載されている情報は全て*が付いていますが、実際には*が付いていない行もあります。そのような場合、今回教えて頂きました方法ですと、*が無いセルについては#VALUE!と表示されてしまいます。 お手数をおかけしますが、以上を踏まえまして再度教えて頂けませんでしょうか?
お礼
どうもありがとうございます!問題解決しました☆