- 締切済み
エクセル 半角変換
関数で半角に変換するのはどうしたらいいんでしょうか? ASC関数を用いるというのはわかるのですが・・・。 表があってその中に半角と全角が混在している場合に、または 統一性をもたせたい場合においてチェック機能としての役割で 利用したいのですが。 ASC関数ではASC(セル)ですよね。 例えばA1セルに『100』という全角数字があるとすれば B1セルにASC(A1)とすればB1に『100』という半角数字がでますよね。 そうではなくてワードの置換機能のような使い方はどうやるのでしょうか? わかりにくい質問ですみません。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- hige_082
- ベストアンサー率50% (379/747)
試してみては 「excel vba」でググって、マクロを何処に書けばよいのか どうすれば実行できるのかをちょこっと勉強して 下記のマクロを標準モジュールにコピペして 実行してみては マクロの実行はファイルのバックアップを取ってから行ってね '標準所ジュールへ Sub 全角⇒半角() Dim rng As Range For Each rng In Range("a1", Cells.SpecialCells(xlCellTypeLastCell)) rng = StrConv(rng, vbNarrow) Next End Sub 面白いよ
- foomama723
- ベストアンサー率0% (0/0)
置換機能もありますが、 B列にASC関数を入力し、半角数字求めてからB列の数式をコピーし、A列に値のみを貼り付ける方が早いかな?と思います。 貼り付け後は、B列の数式は削除してもかまいません。
お礼
ありがとうございます。
- imogasi
- ベストアンサー率27% (4737/17069)
関数では、結果を置く別セルが要ります。式を入れるセルです。ですから原文を置き換えてしまうワードの置換とかと違います。 また質問に書いているように、ASCは1セルの文字列をを対象とするもので、セル範囲を対象とする場合は同じだけの数のセルが必要です。 ーー その解決策は (1)VBAでAsc対応の関数(StrConv)を使うが、セル範囲の各セル数分を処理を自動で繰り返し、もとのセルに置き換える方法 (2)小規模な表ならワードでエクセルと同じセル数の表を作りエクセルから貼り付けし、ワードの置換機能を使って置換し、エクセルへ戻す。エクセルのセルに式が埋め込まれているとこのやり方はダメだろうし、ワードに、全角半角という検索条件指定は設けられていなかったと思う。 でも正規表現的な検索(検索条件に「ワイルドカードを使用する」にして[0-9]や[A-Z]や[ァ-ン])が出来るのですが、置換後の指定方法の書き方がわからなかった(どなたか教えてください)。 ーーー だからVBAを使うより方法が無いと思うが、質問者がVBAの経験ないと思うのですが。 標準モジュールに Sub test01() Dim cl As Range For Each cl In Range("a1:C3") cl = StrConv(cl, vbNarrow) Next End Sub
お礼
VBAを使用することになるのですね。 今後、経験することになるかもしれませんのでご丁寧にありがとうございます。
- merlionXX
- ベストアンサー率48% (1930/4007)
ひょっとしてA1セルに入力した全角文字を、関数でB1に半角で表示させるのではなく、A1セル内で半角に変えたいということですか? ならば、関数では無理ですよ。たとえどんな関数をA1に入れておいたってA1に何かを入力したら消えてしまいますから。 おやりになるなら、ワード同様、エクセルでも「置換」がありますからそれでやるか、あるいはマクロをつかうことになります。
お礼
そうですか。 置換機能を確認しました。 ありがとうございます。
お礼
ご丁寧にありがとうございます。