• ベストアンサー

エクセル:全角→半角の自動変換について

エクセルで一度入力した(大量の) 半角英数字を全角に「自動」で「一括変換」 することは可能でしょうか?? 当方BVAなどまったくの素人なので 詳しい手順なども教えてくだされば さいわいです。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.12

教えて!goo を使っているのですが、今まで、gooからのメールが、ストップしていて 返事が遅れて、すみません。 >「全角」の「大文字」を「半角」の「大文字」にするのが目的なのです。 タイトルと本文の内容が、反対でしたね。 でも、全角の小文字(a、b、c)を変換対象外にするという意味ですか? 取り敢えず、「英数」全部を [全角]-->[半角大文字]に変換する場合です。 Sub 全角英数を半角大文字に変換() Dim Rng As Range Dim Wd As String Dim ChgStr As String Dim N As Integer For Each Rng In Selection   ChgStr = vbNullString   Wd = Rng.Value   For N = 1 To Len(Wd)     If Asc(Mid(StrConv(Wd, vbNarrow), N, 1)) >= 48 And _       Asc(Mid(StrConv(Wd, vbNarrow), N, 1)) <= 122 Then       ChgStr = ChgStr & StrConv(Mid(Wd, N, 1), vbNarrow + vbUpperCase)     Else       ChgStr = ChgStr & Mid(Wd, N, 1)     End If   Next N   Rng.Value = ChgStr Next Rng End Sub

frau
質問者

お礼

お礼が遅くなりすみません。 これでまたひとつ勉強になりました。 数度の質問にお答えくださり感謝してます。 ありがとうございました。

その他の回答 (11)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.11

ごめんなさい。ちょっと飲みながら書いたらクドくなっちゃったぁ~。 「小文字」→「大文字」の追加は、12行目を   ChgStr = ChgStr & Mid(StrConv(Wd, vbWide + vbUpperCase), N, 1) また、「大文字」→「小文字」は、12行目を次のように変更します。   ChgStr = ChgStr & Mid(StrConv(Wd, vbWide + vbLowerCase), N, 1)

frau
質問者

補足

お世話になっております。 ANo.10の方法で「半角英数全角変換()」を 全角→半角にしようと「半角」と「全角」を 入れ替えたらなるのかな?と思って実行しましたが 案の定だめでした(笑)。 これで仕舞いにしますので、「全角」→「半角」 への方法を教えてください。 実は今エクセルで打った大量の 「全角」の「大文字」を「半角」の「大文字」 にするのが目的なのです。 (質問では全角でとありますが間違えました) お手数かけますが、宜しくお願いします!!

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.10

> で、また欲張りにも教えていただきたいのですが(汗) >「小文字」→「大文字」「大文字」→「小文字」 > にするのはどの部分にどういうコードを入力すればよいのでしょう? この際ですから、お気軽にどうぞ・・・ 「小文字」→「大文字」の追加は、次の通りです。 Sub 半角英数全角変換() Dim Rng As Range Dim Wd As String Dim ChgStr As String Dim N As Integer For Each Rng In Selection   ChgStr = vbNullString   Wd = Rng.Value   For N = 1 To Len(Wd)     If Asc(Mid(StrConv(Wd, vbNarrow), N, 1)) >= 48 And _       Asc(Mid(StrConv(Wd, vbNarrow), N, 1)) <= 122 Then       ChgStr = ChgStr & StrConv(Mid(StrConv(Wd, vbWide), N, 1), vbUpperCase)     Else       ChgStr = ChgStr & Mid(Wd, N, 1)     End If   Next N   Rng.Value = ChgStr Next Rng End Sub 「大文字」→「小文字」は、12行目を次のように変更します。  ChgStr = ChgStr & StrConv(Mid(StrConv(Wd, vbWide), N, 1), vbLowerCase)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.9

> コンパイルエラー:End Sub、・・・・・ > どうしたらよいのでしょうか。 余分なコードが入っていると思われますので、コードを一旦、全部消してから、 Sub 半角英数全角変換() から End Sub の19行をコピペして実行してみてください。 コードウィンドウを大きくして、貼り付けてください。 貼り付けたとき、赤い文字があればダメですよ。

frau
質問者

お礼

開いたときすでに入力されているコードが いけなかったのですね。 それらを消して改めてコード入力しましたら、 正常にできました。補足ありがとうございます。 で、また欲張りにも教えていただきたいので すが(汗)、 「小文字」→「大文字」 「大文字」→「小文字」 にするのはどの部分にどういうコードを 入力すればよいのでしょう? ついでといってはナンですが、 教えていただければ幸いです。

回答No.8

#6です。 >ところで質問ついでなのですが、小文字→大文字に することきもこの公式でよいと思いますが(JIS) の代わりに何を入力すればよいのでしょうか? それぞれの変換は以下の関数を使います。 カッコ内は引数で、参考にA1をいれてあります。 大文字→小文字   =LOWER(A1) 小文字→大文字   =UPPER(A1) 先頭文字のみ大文字 =PROPER(A1) 全角→半角     =JIS(A1) 半角→全角     =ASC(A1) 文字(数値)→数字 =VALUE(A1)

frau
質問者

お礼

わーっこんなに! 助かりました!! またひとつ勉強になりました。 ありがとうございました!

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.7

> 半角英数字を全角に「自動」で「一括変換」することは可能でしょうか?? 記号は、除くのですね。 VBAですが、次の手順で操作してみてください。 ・変換するセル範囲を選択します。 ・そのシートのシート名タブを右クリックして「コードの表示」を指定します。 ・開いたコードウィンドウに下記コードをコピーして貼り付けます。 ・貼り付けたコードの何処かにカーソルがある状態で、[実行]-->[Sub/ユーザーフォームの実行]を  クリックします。 ・先程貼り付けたコードを全部消去します。 ・Alt+ Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。 これで、一気に半角英数字を全角に変換されると思います。 ・記号とカナは、変換しません。 ・数字だけのセルは、書式が文字列でないと、全角になりません。これも全角にする場合は、  先に書式を「文字列」にしてから、実行してください。 Sub 半角英数全角変換() Dim Rng As Range Dim Wd As String Dim ChgStr As String Dim N As Integer For Each Rng In Selection   ChgStr = vbNullString   Wd = Rng.Value   For N = 1 To Len(Wd)     If Asc(Mid(StrConv(Wd, vbNarrow), N, 1)) >= 48 And _       Asc(Mid(StrConv(Wd, vbNarrow), N, 1)) <= 122 Then       ChgStr = ChgStr & Mid(StrConv(Wd, vbWide), N, 1)     Else       ChgStr = ChgStr & Mid(Wd, N, 1)     End If   Next N   Rng.Value = ChgStr Next Rng End Sub

frau
質問者

補足

今挑戦してます。 「Private Sub…」 と「End Sub」との間にカーソルがあるので上記の コードを貼り付けました。 そして「実行」したのですが、 「コンパイルエラー:End Sub、End FunctionまたはEnd Property以降には、コメントのみが記述できます」 とでます。 また「Sub 半角英数全角変換()」の部分だけ 矢印が指され、黄色でマーカーがひかれています。 どうしたらよいのでしょうか。

回答No.6

#4です。 >(2)をやると「#BEF!」とエラーがでます…。 ただしくは#REF!(レファレンスエラー)です。 これは、参照先がないときに出るエラーです。 原因は、値貼り付けをしなかったからです。 ここでは、それ以上の説明をいたしませんが、貼り付けの際、そのまま貼り付けを実行しませんでしたか。 ここで行うのは値貼り付けです。 B1をコピーした後、A1を選択した状態で、メニューから、編集/形式を選んで貼り付け、から○値(V)をクリックします。 すると、A1には式でなく値が貼り付きます。

frau
質問者

お礼

「値」でコピペするのを見逃していまいした。 できました。ありがとうございました。 ところで質問ついでなのですが、小文字→大文字に することきもこの公式でよいと思いますが(JIS) の代わりに何を入力すればよいのでしょうか?

回答No.5

横から失礼します。 「#REF!」というエラーは「参照できないよ!」という意味です。 コピーする際に右クリックメニューから「形式を選択して貼り付け」を選択して「値」で貼り付けてみては?

frau
質問者

お礼

「値」でコピペするのを見逃していまいした。 ありがとうございました。

回答No.4

#2です。 一括変換とは、もとのセル(半角)を全角に変換すると言う意味ですよね。 本格にそれを実行するにはマクロの手を使わないとできませんが、簡易的(半自動的)という意味では、#2の回答です。 具体的には、A1に変換したい英数字がある場合、 (1)B1(作業用)に=JIS(A1)を入力 (2)B1をコピーして、元のセルA1に値貼り付ける。 (3)完了後、作業用に使ったA2は削除する という手順です。

frau
質問者

補足

>簡易的(半自動的) 今回の場合はそれでもよいのです。 テスト用にあらしいシートを用意して やってみたのですが、 (1)B1(作業用)に=JIS(A1)を入力 まではできたのですが、 (2)をやると「#BEF!」とエラーがでます…。

回答No.3

自動で一括変換となると、VBAを組む必要があります。 関数で変換できるのでセルを複写するなりの工夫で変換してはいかがでしょう。 =JIS(セル値) セル値・・・A1とか

回答No.2

一括変換というわけには行きませんが、関数でうまくいきます。 A1に半角英数字が入っているとして、 =JIS(A1) で変換できます。あとはこれをコピーし、編集/形式を選択して貼り付け/値貼付けでもとのセルに貼り付ければOKです。 ちなみに半角に変換する関数は=ASC(A1)です。

frau
質問者

お礼

えっと、A1のセルを選択しまして、 =JIS(A1)をどこにコピペすればよいので しょうか。関数も使ったことが皆無ですの ですみません、教えてください。

専門家に質問してみよう