[[20110813231917]] 『半角を全角に』(kk) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

 『半角を全角に』(kk)
 たびたびお世話になります。
 A1からH50に半角に書かれたカタカナが所々にあります。
 このカタカナの半角を一度に全角に出来ないでしょうか。
 http://hamachan4.exblog.jp/10074968/
 上記では一列だけでした。
 宜しく御願いします。
 Excel2003 WindowsXPです。

 そのセル範囲のセルには半角カナ以外の半角文字(英数字)はある?
で、あるとして、それらは変換対象外?

 ところで、参照したURLのページ、たまたま1列の範囲に対してJIS関数をいれて、それを値コピーしているわけだけど
これでいいなら、複数列領域に対してJIS関数をいれて、いれたセル範囲をすべて選んで、コピー実行すればいいだけのことだよ。

 (ぶらっと)

 ぶらっと様
 いつもお世話になります。
 変換対象外です。
 有難うございました。
 (kk)

 それだとちょっと面倒かな?
VBAでよければ明日、時間とって書いてみるけど。

 (ぶらっと)

 ぶらっと様
 下記のマクロで出来ました。
 Sub han2zen()
    Dim c As Range
    Dim i As Integer
    Dim rData As Variant, ansData As Variant
        For Each c In Selection
            ansData = ""
            For i = 1 To Len(c.Value)
                rData = StrConv(c.Value, vbWide)
                If Mid(rData, i, 1) Like "[A-z]" Or Mid(rData, i, 1) Like "[0-9]" Or Mid(rData, i, 1) Like "−" Then
                    ansData = ansData & StrConv(Mid(rData, i, 1), vbNarrow)
                Else
                    ansData = ansData & Mid(rData, i, 1)
                End If
            Next i
            c.Offset(0, 0).Value = ansData
        Next c
 End Sub
 どうもありがとうございました。
 今後もご指導御願いします。
 (kk)


 ご自身のがんばりで目的を達成された由、祝着。

 実際の文字列に使われている文字の種類が、こちらからは見えないので、このコードでOKということは
このコードで対応している範囲の文字の種類だったということなんだろうし、外野からとやかくいうことはないので
あくまで蛇足のコメントとして以下。

 文字列の中の半角カタカナ「のみ」を全角変換するのが要件だと理解していたので、もともと全角の英数字や記号が
あった場合は、それらは変換対象外(つまり全角のまま)と思いこんでいた。
また、半角記号には 「-」以外のも様々あるんだろうなと想像していた。

 老婆心ながら・・
ループの中で文字列連結を繰り返すと連結回数にもよるけど、連結するにしたがって、処理が「幾何級数的」に重くなり、
最後は、超のろのろ運転になってしまう。
なので、文字列桁数を要素にした一次元配列に格納して、最後に連結文字なしでJOINさせる方式も検討されたらと。

 提案しようと思っていたコードは
半角カタカナといわれる文字コード(55種類ぐらい)から、その全角コードへ、VBA関数のReplaceで処理。
文字ごとの処理ではなく、文字列に対する処理。セルごとに55回のループになるので、セル内の文字数にも
よるけど、ループ回数は、kkさんのコードより多くなるけど処理時間は配列処理に変更させたものと、どっこいどっこいかな。

 (ぶらっと)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.