• 締切済み

VB 文字の分割??

EXCELのSheet1にマクロのSWをつけてSheet2のA列の文字をC列にうつす。 と言うコマンドボタンを作りました。 その後、C列のMSNA00881Sなどの任意の文字を分割し、変換したいのですが・・・・先ず、4文字目のAをA=B B=Cなどこちらが指定した任意の文字に変更。 その後、0088を任意の数字に変換。 等です。 先ず文字を分割して、その後selectを使って、、と言われたのですが。。 上手く動きません。 どのように作ったらいいのでしょうか??

みんなの回答

noname#79209
noname#79209
回答No.3

直接の回答ではありませんが... 何か特殊な意図があるなら別ですが、 マクロを使用してまでA列の中身をC列にコピーする意図がイマイチわかりません。 もし「データを変換したいので一旦コピーする」というだけなら、 データ変換するための「ユーザー定義関数」を作成し、C列の計算式として入力すればよいのでは? ご質問の結果を得るユーザー定義関数を「fncConvData」と仮定して、 C列には、 =fncConvData(A1) とすればよいように思えますが...

noname#25230
noname#25230
回答No.2

VBAエディタで標準モジュールを追加し、下記のコードを貼り付けてみてください。 --------------- Public Function 四文字目置換(対象文字列 As String, 置換文字 As String) As String Dim 結果 As String 結果 = Left(対象文字列, 3) & 置換文字 & Right(対象文字列, Len(対象文字列) - 5) 四文字目置換 = 結果 End Function Public Function 番号置換(対象文字列 As String, 新番号 As String) As String Dim 結果 As String 結果 = Left(対象文字列, 4) & 新番号 & Right(対象文字列, Len(対象文字列) - 8) 番号置換 = 結果 End Function ----------------- で、適当なセルに 「=四文字目置換(C1,"B")」 と書くと、四文字目が「B」になったものが表示されます。 また、 「=番号置換(C1,"1234")」 と書くと、番号部分が1234になったものが表示されます。 必ず、文字列中の番号が決まった場所にあるのであれば、replace関数で「指定した番号を、新しい番号に置き換える」という処理でもいけます。 いろいろ試してみてください。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

文字列の部分取り出し、ならばMIDあるいはMIDB関数。 =MID(元の文字列,開始文字位置,対象とする文字数) =MIDB(元の文字列,開始文字のバイト位置,対象とする文字のバイト数) あとはIF文なりで判断・操作してみてください。