- ベストアンサー
英数字だけを半角にしたいのですが、、、
教えてください。 例えば、 コジマビルA202→コジマビルA202のように 英数字のみを半角にしたいのですがASC関数を使うとカナのコジマビルまで半角になってしまいます。。。どうぞ宜しくお願いします。 ソフトはエクセル2000でOSはXPです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ワークシート関数では無理でしょう。 で、マクロなんですが、#2の方のマクロですと、アルファベットが小文字に、数字だけが半角になっちゃうのでだめですよね? ということで作ってみました。 下のマクロをそのまま貼り付けてください。 コジマビルA202 が、A1に入っていたら、変換結果を表示させたいセルに =NarrowChange(A1) と入力してください。 '---------ここから---------- Function NarrowChange(ByVal strString As String) As String Dim intLength As Integer Dim strCut As String intLength = Len(strString) Do While strString <> "" strCut = Left(strString, 1) If (strCut >= "0" And strCut <= "9") _ Or (strCut >= "A" And strCut <= "Z") _ Or (strCut >= "a" And strCut <= "z") Then NarrowChange = NarrowChange & StrConv(strCut, vbNarrow) Else NarrowChange = NarrowChange & strCut End If strString = Mid(strString, 2) Loop End Function
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
関数=LOWER(A1)、=ASC(B1)などもダメでした。関数では 出来ないでしょう。 VBAで関数を作成してみました。ご参考に。 A3に=henkan(a1), A4に=henkan(a2)をいれると下記3,4行になります。 (A1)コジマビルA202 (A2)小島アンドビルPASA12202 (A3)コジマビルa202 (A4)小島アンドビルpasa12202 下記をVBEの画面でModuleを挿入し、下記Funktion以下を貼りつけ れば私製関数=henkan()が使えます。 ---- Sub test01() Dim a As String a = Worksheets("sheet1").Cells(2, 1) MsgBox henkan(a) End Sub -------- Function henkan(a As String) s = "0123456789" ss = "0123456789" ' a = Worksheets("sheet1").Cells(2, 1) ' MsgBox a b = StrConv(a, vbLowerCase) For i = 1 To Len(b) c = Mid(b, i, 1) For j = 1 To 10 If c = Mid(s, j, 1) Then d = Mid(ss, j, 1) x = x & d GoTo p01 End If Next j x = x & c p01: Next i ' MsgBox x henkan = x End Function
お礼
お礼のご返事が大変遅くなり申し訳ありませんでした。。。大変参考になりました。誠にありがとうございました。
- sabodes
- ベストアンサー率34% (15/43)
文字入力を固定するには、エクセル2000ではなく、FEPの設定で可能です。 例えばATOK14では、プロパティの入力・変換の設定項目の中で半角全角 変換の設定で設定一覧で文字の種類を選択して設定できます。 IME2000では、プロパティの[オートコレクト]で設定できます。 [文字種によって、全角/半角どちらに変換するかを指定します。] の一覧から指定する文字種や記号をクリックします。[常に半角に変換]をクリックします。 その他のFEPでも同じように設定できると思います。
お礼
お礼が大変遅くなりました。早速のご回答ありがとう ございました。
お礼
お礼が大変遅くなりました、すみません。。。 taka_tetsuさんのおかげで出来ました。ご親切にありがとうございました。またなにかありましたら宜しくお願いいたします。