[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『「全角を半角に」英数とスペースのみ行いたいのですが…』(トト)
こちらで検索していくつか出てきましたが、ドンピシャがなかったので新規に質問させていただきます。
英数記号カタカナひらがな漢字全部交ざった表があります。
その表中の英数とスペースを半角に変換したいのですが、ASC関数はもちろんダメでした。
申し訳ありませんが、方法を教えてください。
よろしくお願いします。
数式で処理するものを参考までに書いてみます。
A1に元データとしますと、 B1に =IF(ISERR(-MID($A1,COLUMN(A1),1)) *EXACT(UPPER(MID($A1,COLUMN(A1),1)),LOWER(MID($A1,COLUMN(A1),1))), MID($A1,COLUMN(A1),1),ASC(MID($A1,COLUMN(A1),1)))
C1に=B1&IF(ISERR(-MID($A1,COLUMN(B1),1)) *EXACT(UPPER(MID($A1,COLUMN(B1),1)),LOWER(MID($A1,COLUMN(B1),1))), MID($A1,COLUMN(B1),1),ASC(MID($A1,COLUMN(B1),1))) として、C1をIV1までフィルドラッグ。というものです。 (LOOKUP)
しかしながら表が大きいのです。
A〜J列まであるうちの5列が変換したい該当列で、行にいたっては5万行あります。
また文字数もバラバラで、長いものだと100バイトを超えます。
多少の手作業(というのもなんだか変ですが…)は厭いませんが、LOOKUPさんの方法ではちょっと厳しいです。
もう少しお知恵をお貸しくださいませm(_ _)m
(トト)
VBA処理だとこうなりますかね? Alt+F11を押して、標準モジュールを挿入し、下記コードを貼り付け。 変換したい範囲を選択し、Alt+F8を押して、「トト」を実行。 コピーでお試し下さい。 '---- Sub トト() Dim myStr As String, convStr As String, sentStr As String Dim C As Range Dim i As Long For Each C In Selection sentStr = "" myStr = C.Value For i = 1 To Len(myStr) Select Case Asc(StrConv(Mid(myStr, i, 1), vbNarrow)) Case 32, 48 To 57, 65 To 90, 97 To 122 convStr = StrConv(Mid(myStr, i, 1), vbNarrow) Case Else convStr = Mid(myStr, i, 1) End Select sentStr = sentStr & convStr Next C.Value = sentStr Next End Sub '(ROUGE)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.