アプリ版:「スタンプのみでお礼する」機能のリリースについて

住所の表を整理しているのですが、数字が全角になっているので、半角に変換したいと思い、ASC関数を使ったのですが、カタカナまで半角になってしまいました。
カタカナは全角で、数字だけ半角にしたいのですが。。
数字だけを半角にする方法ってないんでしょうか?

A 回答 (5件)

問題は解決済みと思いますが、数字のみ全角→半角にするマクロです。

ご参考まで。

Sub MacroR()
Dim idx As Integer, trg As Range
 Set trg = ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, xlTextValues)
 For idx = 0 To 9
  trg.Replace What:=Right(StrConv(str(idx), vbWide), 1), _
   Replacement:=Right(str(idx), 1)
 Next
End Sub

マクロはALT+F11でVBE画面を開き、「VBAProjectエクスプローラのシート名右クリック」→「挿入」→「標準モジュール」で表示される画面にペーストして下さい。実行はALT+F8を押して、マクロ名を選択します。
    • good
    • 17
この回答へのお礼

ご回答ありがとうございます!

表の修正にはまだ手をつけておりませんでしたので、
早速試してみました。

“マクロアレルギー”で、パッと見ただけで一瞬くらくらしてひるんでしまいましたが、
ご説明のとおりに冷静にひとつずつ作業していったら、
無事、「数字のみを半角にする」という課題が解決しました!

すごいですね~~!!
おぉ~~~~みるみるうちに変換されていくでわありませんかっ!!
カンドーしましたっ!!!(涙)

エクセルっておもしろいですね。もっと勉強したいと思いました。

ホントにホントに、ありがとうございました。

お礼日時:2006/09/21 21:18

こんばんは。



お聞きになる前に、ここのカテゴリを検索しても良かったと思います。
同じような質問は、何度もありますね。いろんな人が回答しています。

以下の私の場合は、以下のようなものがあります。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2301108
(http://okwave.jp/kotaeru.php3?q=2301108)

SpecialCells で、セルを取得すればよいと思いますが、少し手直ししました。あまりきちんと調べてはいませんが、大丈夫のような気がします。

'標準モジュール

Sub HenkanMcr()
  Dim r As Range
  Dim c As Range
  Const MPATTERN As String = "([0-9]+)[^0-9]*"
  On Error Resume Next
  Set r = ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
  On Error GoTo 0
  If Not r Is Nothing Then
  For Each c In r.Cells
   If StrConv(c.Value, vbNarrow) Like "*#*" Then
    c.Value = myRegExp2(c.Value, MPATTERN)
   End If
  Next c
  End If
  Set r = Nothing
End Sub

Private Function myRegExp2(str As Variant, STRPATTERN As String)
 Dim Matches As Object 'MatchCollection
 Dim Match As Object 'as Match
 Dim buf As String
 Dim buf2 As String
 Dim rep As String
 
 With CreateObject("VBScript.RegExp")
  .Pattern = STRPATTERN
  .IgnoreCase = False
  .Global = True
  If .test(str) Then
   Set Matches = .Execute(str)
   buf2 = str
   For Each Match In Matches
    rep = .Replace(Match.Value, "$1")
    buf = StrConv(rep, vbNarrow)
    buf2 = Replace(buf2, rep, buf)
   Next
   myRegExp2 = buf2
   Set Matches = Nothing
  Else
   myRegExp2 = str
  End If
 End With

End Function
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます!

せっかく詳細なお答えをいただいたのにもかかわらず、
私の知識ではよく理解することができませんでした。。
ごめんなさい。もっと勉強します。

お礼日時:2006/09/21 21:11

有料ですが下記のサイトのアドインを使うのが便利ですね。


仕事を加速する!Excel魔法のボタンコレクション」1,580円
http://www.freeformat.co.jp/AddInIndex.htm
    • good
    • 0
この回答へのお礼

へぇ~こんなのがあるんですね。
大変興味深いです。
まず、「仕事を加速する!」というキャッチコピーにやられました(笑)。かなりそそられますね!

使ったことありますか?大活躍ですか?
どれくらいエクセルやる人が使った方がいいのでしょう??

最近、データ入力・グラフ作成など、エクセルを使う機会が多くなってきましたので、
やっとエクセルのことを勉強し始めたしだいです。
と、言っても「こんなことできないだろうか」という疑問が生じたときに、調べてやってみるというようなカンジですが。

私が知らないだけで、世の中にはいろいろ便利なものがあるんだろうに、なかなか手を出せずじまいです。

お礼日時:2006/09/21 18:11

今回だけの対処でしたら


置換で処理してしまっては如何でしょう?
10回やれば済みます。(~_~;)
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
今回は置換処理で対応することにしました。
なんとかなりそうです。

お礼日時:2006/09/21 17:58

単純に、文字列の置換で出来ませんか?



シートの左上をクリックして、シート全体を選択しておいて、編集→置換から、全角数字を半角数字にするだけです。
0から9まで10回繰り返す程度でしたら、苦にもならないでしょう。
    • good
    • 0
この回答へのお礼

あ、なるほど。
そのテがありましたか!
10回くらいだったら、そんなに頻繁に起こることでもありませんし、
それほど大変ではないですね。
その方法で対処してみます。
ご回答ありがとうございました。助かりました。

お礼日時:2006/09/21 17:56

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