
エクセル2000を使っています。
会社で住所録作成を引き継ぎましたが、
一つのセルにひらがな、漢字、カタカナ、英数字
が半角・全角ごちゃ混ぜで入っているので
管理がしづらくて困っています。
例えば、
あいうアジアNET株式会社
株式会社ABC123
などなど・・・・
ひらがな・漢字はそのままで、
カタカナを全角、英数字を半角にする方法は
ありませんか?
最初にASC関数を使ってみたらカタカナも半角になり、
Phonetic関数を使うと、
カタカナだけ全角になりましたが、
ひらがなまでカタカナになり・・・
JIS関数も試しましたが今度は英数字まで全角になり、
どうしたものかと困っております。
よろしくお願いします。
No.4ベストアンサー
- 回答日時:
No.2です。
遅くなりました。修正コード、、というより別物ですがアップします。実は、以前に類似した質問に回答したことがあります。(参考URL)
今回はBLUEPIXYのコードも参考にさせてもらい、その時のコードに手を加えました。
関数myStrFmtはワークシートでも使えますし、他のプロシージャーでも使えます。
どうでしょうか?
========== 次行からコード ==================================
'***************************************************************
' カタカナは全角化、英数字および記号を半角化するユーザー定義関数
' 引数:文字列 変換対象となる文字列を指定します
' 引数:数字 数字半角化オプション(省略可) 規定値:True
' 引数:記号 記号半角化オプション(省略可) 規定値:False
'***************************************************************
Function myStrFmt(文字列 As String, Optional 数字 As Boolean = True, Optional 記号 As Boolean = False)
Dim ReplaceList As String
Dim TargetStr As String
Dim MAK As String, NUM As String, ALB As String
Dim i As Long
'半角化の対象とする文字を全角で定義
MAK = "!#$%&'()*+-./:;<=>?@[¥]^_{|}。、,,"
NUM = "01234567890"
ALB = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
'置換リスト作成
ReplaceList = NUM & ALB & StrConv(ALB, vbLowerCase)
If 数字 Then ReplaceList = ReplaceList & NUM
If 記号 Then ReplaceList = ReplaceList & MAK
'全角化
文字列 = StrConv(文字列, vbWide)
'置換
For i = 1 To Len(ReplaceList)
TargetStr = Mid(ReplaceList, i, 1)
文字列 = Replace(文字列, TargetStr, StrConv(TargetStr, vbNarrow))
Next i
myStrFmt = 文字列
End Function
'マクロで関数を使用するサンプル(セルを選択した状態で実行)
Sub サンプル()
On Error Resume Next
Dim rngCell As Range
Application.ScreenUpdating = False
For Each rngCell In Selection
If rngCell.Value <> "" Then
rngCell.Value = myStrFmt(rngCell.Value, True, False)
End If
Next rngCell
Application.ScreenUpdating = True
End Sub
参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=1100627
ありがとうございました!
今度は問題なく全て変換されました。
過去にお答えになったという質問も
読ませていただきました。
過去の質問も一応は
チェックしましたが、完全に見落としておりまして、
恥ずかしい限りです。
問題もおかげで解決し、
本当にありがとうございました。
No.3
- 回答日時:
No.2です。
>なぜかportという単語が ppsu になったり、
申し訳ないです。関数で変換部分がマズかったです。私が関数のコードを作成したPCではOKだったのですが、ほかのPCでは、誤置換されてしまいました。
修正コードをアップしますので、少々お待ちいただけたら幸いです。
No.2
- 回答日時:
こんにちは。
一般操作による方法が思い付きません。ユーザー定義関数にしてみました。したがって、ワークシートで使用することも、マクロで使用することも可能です。
1. ワークシートで使用する場合
A1セル:変換対象となるデータ B1セル:=myStrFmt(A1)
ASC関数などと同じように使用します。
2. マクロで使用する場合
サンプルマクロを示します。セルを範囲選択し、実行すると漢字・ひらがな・カタカナは全角、英数字は半角に統一します。
ただし、あまり効率的なやり方では無いような気がしてます。置換をゴリゴリやっているだけですから。でも、以下の環境で10,000件のテストデータ変換に1分程度ですから、実用には耐えるのではないでしょうか?
CPU:C400 Memory:256M Win98SE Excel2000
========== 次行からコード ==================================
'ユーザー定義関数(ワークシートで使えます)
'文字列中のひらがな・カタカナを全角、英数字を半角にします。
Function myStrFmt(Target As String) As String
Target = StrConv(Target, vbWide)
'全角アルファベット置換
For i = -32160 To -32135
Target = Replace(Target, Chr(i), Chr(i + 32225))
Target = Replace(Target, Chr(i + 32), Chr(i + 32 + 32225))
Next i
'全角数字置換
For i = -32177 To -32168
Target = Replace(Target, Chr(i), Chr(i + 32225))
Next i
myStrFmt = Target
End Function
'マクロで関数を使用するサンプル(セルを選択した状態で実行)
Sub サンプル()
On Error Resume Next
Dim rngCell As Range
Application.ScreenUpdating = False
For Each rngCell In Selection
If rngCell.Value <> "" Then
rngCell.Value = myStrFmt(rngCell.Value)
End If
Next rngCell
Application.ScreenUpdating = True
End Sub
この回答への補足
丁寧に教えていただき、ありがとうございました。
教えていただいたとおりにやったつもりなのですが、
なぜかportという単語が ppsu になったり、
e が f になってしまいました。
全てのportが ppsuに、eがfになるわけではないので、
もともとのデータの入力時になにか問題があったのかしら? と思います。
また、最初に触れませんでしたが、「・」も
リスト中にあり、それは全て「a」に変換されました。
頂いた関数を見ればなにかわかるかな・・・
と思いましたが、なにぶん、マクロ・関数は(も)
初心者でよくわかりませんでした・・・。
何か思いつくことがございましたら、
今一度ご教授いただけますでしょうか。
よろしくお願いいたします。
No.1
- 回答日時:
拙作のユーザー定義関数で指定した文字を置き換えることができます。
変換が必要なセルをA1だとして
いったん全角に変換してから英数字を半角に置き換えるという方針で
=tr(JIS(A1),"ABCDEFGHIJKLMNOPQRSTUVWXYZ@+-.0123456789","ABCDEFGHIJKLMNOPQRSTUVWXYZ@+-.0123456789")
みたいな、感じで置き換えたい文字の種類を書きます。お好みで英記号を追加して下さい。
ALT+F11でVBEにて標準モジュールで以下を貼り付けて使用して下さい。
Public Function tr(str As String, replaceList As String, convertList) As String
Dim i, c
For i = 1 To Len(replaceList)
str = Replace(str, Mid(replaceList, i, 1), Mid(convertList, i, 1))
Next
tr = str
End Function
ご教授ありがとうございました。
コピペでやってみたら解決しました!
ユーザー定義関数などは
利用したことがなかったので、
これから教えていただいた関数の中身を
理解したいと思います!
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
「Ms-Excel」の関数「UボードのUのみを半角にしたい」についての質問
Excel(エクセル)
-
英数字のみ全角から半角に変換
その他(Microsoft Office)
-
特定の列の値を、ひらがな・漢字はそのままで、 カタカナを全角、英数字を半角に変換する
Excel(エクセル)
-
-
4
Excelの中に全角ひらがな、漢字、半角英数が混在しいる場合一括で変換するのではなく、半角英数字が混
Excel(エクセル)
-
5
エクセル ひらがなの文字を抽出
Excel(エクセル)
-
6
Excel。英数字カタカナ混ぜこぜのセルで、カタカナのみ全角にする方法は?
Windows 95・98
-
7
WordやExcelで英数字のみ半角または全角にしたい
その他(Microsoft Office)
-
8
カタカナのみを半角から全角に変換したいのですが
Excel(エクセル)
-
9
ExcelでASCを使って全角を半角にするとカタカナも半角になってしまいます。
Excel(エクセル)
-
10
複数の文字列のいずれかが含まれていたらTRUEを返す関数について
Excel(エクセル)
-
11
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
12
エクセルデーターから必要な項目を抜き出す方法を教えてください
Excel(エクセル)
-
13
エクセルで欠番を見付けるには
Excel(エクセル)
-
14
Excelでカタカナ・ひらがな・英数字の抽出
その他(Microsoft Office)
-
15
エクセルの複数のセルを一括で絶対参照にする方法
Excel(エクセル)
-
16
エクセル2016でfilter関数がないので、、抜き出す関数をおしえてください。
Excel(エクセル)
-
17
エクセルを使用して、円周率を表示させる方法
Excel(エクセル)
-
18
エクセルで入力すると隣のセルに別のセルの文字が反映されるようにしたい
Excel(エクセル)
-
19
【Excel】 1つのセルの日にちを4分割にしたい
Excel(エクセル)
-
20
Excelについて教えてください 横向きの表を並び替えたいのですが上手く行きません。 例えば 1 5
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
半角の×(かける)は?
-
EXCELで、セル内の半角カ...
-
℃の半角表示
-
Excel 文字列の中から数字だけ...
-
半角の『°(単位の度)』
-
EXCELの文字列操作で文字数不足...
-
英文字を手打ちの状態にしたい
-
隅付き括弧に半角はありますか...
-
12000文字以内。Wordです。スペ...
-
ローマ数字 IV
-
半角αを全角αにしたい
-
エクセル関数で文字列の中のス...
-
契約書や 公文書・私文書などに...
-
スマホで入力方法について教え...
-
△
-
VBAの正規表現について教えてく...
-
Word2003で半角カタカナが全角...
-
ZIPファイルのパスワードについて
-
TeXで半角中点を入れたいのですが
-
『/』の逆を入力したいのに。。。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
契約書や 公文書・私文書などに...
-
EXCELの文字列操作で文字数不足...
-
半角スペース
-
℃の半角表示
-
テプラは半角数字が使えますか?
-
半角の×(かける)は?
-
エクセル関数で文字列の中のス...
-
半角の『°(単位の度)』
-
EXCELで、セル内の半角カ...
-
Excel 文字列の中から数字だけ...
-
メールアドレスの上ハイフン入...
-
EXCEL95 VLOOKUP関数で半角と全角
-
Excel2016 検索の窓を常時表示...
-
エクセルで、JIS関数、ASC関数...
-
お名前(姓)」には「カタカナ(...
-
エクセルで 全角の空白を含む...
-
【VBA】ファイルパスに半角スペ...
-
エクセルでひらがな・漢字はそ...
-
ヘッダー(フッター)の全角・...
-
ビジネスの文書における、数字...
おすすめ情報