アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2002 一桁数字だけ全角に置換
したいのですが、どうすればよいのでしょうか?

数字はすでに打ち込まれており、全て半角で、仮名も交じった文章です。
一桁数字を全角に 1→1 二桁以上の数字は半角のままにしたいのですが・・

宜しくお願いします。

A 回答 (3件)

VBAのほうで解決させてよいのかな?


関数ですと、一回目は出来るような気がします、おそらく、次に出てくる数字は出来ませんね。(以下のような文字列)

>数字はすでに打ち込まれており、全て半角で、仮名も交じった文章です。
(事情により半角カタカナはいれませんが)
 ABCDE12345FGHIJK123456LMNOP
処理後:
 ABCDE12345FGHIJK123456LMNOP (サイト上では見分けが付きませんが)
という場合に、12345 で、5 を全角にする、123456 は、6 を全角にするという解釈ですか。

以下は、単独のユーザー定義関数だけでも、変換が可能です。
ふつうの関数と同じように、 = ConvertLetter(A1)
で変換されます。

VBEditor を開き、挿入--標準モジュール で、以下のプログラム・ソースを貼り付けてください。


'//
Sub MyTest1()
Dim c As Variant
 For Each c In Selection
  If c Like "*##*" Then
   c.Offset(, 1).Value = ConvertLetter(c.Value)
   c.Offset(, 1).Value = c.Offset(, 1).Value '値貼り付け
  End If
 Next
End Sub

Function ConvertLetter(ByVal strTxt As String) As String
'ユーザー定義関数
Dim Matches As Object
Dim Match As Object
Dim buf As String, rep As String
 With CreateObject("VBScript.RegExp")
  .Pattern = "\d+"
  .Global = True
 buf = strTxt
 Set Matches = .Execute(buf)
 For Each Match In Matches
  rep = Left(Match, Len(Match) - 1) & StrConv(Right(Match, 1), vbWide)
  buf = Replace(buf, Match, rep, 1, 1)
 Next
 End With
 ConvertLetter = buf
End Function
    • good
    • 2
この回答へのお礼

ありがとうございました。

お礼日時:2010/10/14 22:42

チェックする文字列を全部とってくる(1行分でも全部でも)



チェックする文字列を左から1文字ずつ切り取り

IF 切り取った文字が数字である then

  隣の文字を切り取る
IF 隣の文字が数字でない Then

先に切り取った文字を全角してAに入れる
    AにA+隣の文字を入れる
Else '隣の文字が数字である または 空白

    AにA+隣の文字を入れる
  End IF

Else
  AにA+切り取った文字を入れる

End IF

最初にとってきた文字列がなくなったら
完成したAを返してあげる。


みたいにすれば、できると思う。
数字の連続をどうやって判定するか問題かな
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/10/14 22:43

IFによる条件分岐で 全角に変換する文字<=9  の条件を付け加えればよい!

    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2010/10/14 22:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!