秘密基地、どこに作った?

エクセルで一度入力した(大量の)
半角英数字を全角に「自動」で「一括変換」
することは可能でしょうか??

当方BVAなどまったくの素人なので
詳しい手順なども教えてくだされば
さいわいです。

宜しくお願いします。

A 回答 (12件中1~10件)

教えて!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
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/14 23:34

ごめんなさい。

ちょっと飲みながら書いたらクドくなっちゃったぁ~。

「小文字」→「大文字」の追加は、12行目を

  ChgStr = ChgStr & Mid(StrConv(Wd, vbWide + vbUpperCase), N, 1)

また、「大文字」→「小文字」は、12行目を次のように変更します。

  ChgStr = ChgStr & Mid(StrConv(Wd, vbWide + vbLowerCase), N, 1)

この回答への補足

お世話になっております。

ANo.10の方法で「半角英数全角変換()」を
全角→半角にしようと「半角」と「全角」を
入れ替えたらなるのかな?と思って実行しましたが
案の定だめでした(笑)。

これで仕舞いにしますので、「全角」→「半角」
への方法を教えてください。
実は今エクセルで打った大量の

「全角」の「大文字」を「半角」の「大文字」

にするのが目的なのです。
(質問では全角でとありますが間違えました)

お手数かけますが、宜しくお願いします!!

補足日時:2005/04/08 20:15
    • good
    • 0

> で、また欲張りにも教えていただきたいのですが(汗)


>「小文字」→「大文字」「大文字」→「小文字」
> にするのはどの部分にどういうコードを入力すればよいのでしょう?

この際ですから、お気軽にどうぞ・・・

「小文字」→「大文字」の追加は、次の通りです。

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)
    • good
    • 0

> コンパイルエラー:End Sub、・・・・・


> どうしたらよいのでしょうか。

余分なコードが入っていると思われますので、コードを一旦、全部消してから、

Sub 半角英数全角変換() から End Sub の19行をコピペして実行してみてください。

コードウィンドウを大きくして、貼り付けてください。
貼り付けたとき、赤い文字があればダメですよ。
    • good
    • 0
この回答へのお礼

開いたときすでに入力されているコードが
いけなかったのですね。
それらを消して改めてコード入力しましたら、
正常にできました。補足ありがとうございます。

で、また欲張りにも教えていただきたいので
すが(汗)、
「小文字」→「大文字」
「大文字」→「小文字」
にするのはどの部分にどういうコードを
入力すればよいのでしょう?

ついでといってはナンですが、
教えていただければ幸いです。

お礼日時:2005/04/06 19:18

#6です。



>ところで質問ついでなのですが、小文字→大文字に
することきもこの公式でよいと思いますが(JIS)
の代わりに何を入力すればよいのでしょうか?

それぞれの変換は以下の関数を使います。
カッコ内は引数で、参考にA1をいれてあります。

大文字→小文字   =LOWER(A1)
小文字→大文字   =UPPER(A1)
先頭文字のみ大文字 =PROPER(A1)
全角→半角     =JIS(A1)
半角→全角     =ASC(A1)
文字(数値)→数字 =VALUE(A1)
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/06 19:15

> 半角英数字を全角に「自動」で「一括変換」することは可能でしょうか??



記号は、除くのですね。

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

この回答への補足

今挑戦してます。

「Private Sub…」
と「End Sub」との間にカーソルがあるので上記の
コードを貼り付けました。
そして「実行」したのですが、

「コンパイルエラー:End Sub、End FunctionまたはEnd Property以降には、コメントのみが記述できます」
とでます。
また「Sub 半角英数全角変換()」の部分だけ
矢印が指され、黄色でマーカーがひかれています。

どうしたらよいのでしょうか。

補足日時:2005/04/06 14:34
    • good
    • 0

#4です。


>(2)をやると「#BEF!」とエラーがでます…。
ただしくは#REF!(レファレンスエラー)です。
これは、参照先がないときに出るエラーです。
原因は、値貼り付けをしなかったからです。
ここでは、それ以上の説明をいたしませんが、貼り付けの際、そのまま貼り付けを実行しませんでしたか。
ここで行うのは値貼り付けです。

B1をコピーした後、A1を選択した状態で、メニューから、編集/形式を選んで貼り付け、から○値(V)をクリックします。
すると、A1には式でなく値が貼り付きます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/06 06:47

横から失礼します。


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

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

お礼日時:2005/04/06 06:46

#2です。


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

この回答への補足

>簡易的(半自動的)
今回の場合はそれでもよいのです。

テスト用にあらしいシートを用意して
やってみたのですが、
(1)B1(作業用)に=JIS(A1)を入力
まではできたのですが、
(2)をやると「#BEF!」とエラーがでます…。

補足日時:2005/04/05 18:20
    • good
    • 0

自動で一括変換となると、VBAを組む必要があります。


関数で変換できるのでセルを複写するなりの工夫で変換してはいかがでしょう。

=JIS(セル値)
セル値・・・A1とか
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報