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

1→ 一
2→ 二
など。

A 回答 (9件)

こんにちは。


オプションをつけました。引数[Stopper]の文字以降は、数字を漢字に変換しません。ユーザー定義関数と一般プロシージャ両方に、オプションを入れてありますので、試してみてください。

前回のものを、そっくり置き換えてください。

'<標準モジュール>
'一括で変換する場合
Sub SujiHenkan()
Dim c As Range
'設定:右となりにいくつ?(例:1つ右となりへ出力)
Const Migi As Long = 1
'範囲をマウスで選んでください
 For Each c In Selection
  If Not IsEmpty(c) Then
   If IsNumeric(c.Value) Or c.Value Like "*[0-9|0-9]*" Then
    'オプションをつけました。
    c.Offset(, Migi).Value = Suji2Kan(c.Value, , "丁目")
   Else
    c.Offset(, Migi).Value = c.Value
   End If
  End If
 Next
End Sub

Function Suji2Kan(ByVal myString As String, _
        Optional opt As Long = 1, Optional Stopper As String)
 'Suji2Kan(文字列, [1 =一万二千三百四十五,2=壱萬弐阡参百四拾伍, _
  一二三四五] ただし、非数字が入ると、2と3のみになる, [Stopper]それ以降は変換しない
 Dim strItem As String
 Dim buf As String, i As Long
 If Not myString Like "[0-9|0-9]*" Then
  For i = 1 To Len(myString)
   strItem = Mid$(myString, i, 1)
   If InStr(myString, Stopper) = i Then _
     buf = buf & Mid$(myString, i): Exit For
   If strItem Like "[0-9|0-9]" Then
    buf = buf & Evaluate("NumberString(" & strItem & "," & opt & ")")
    Else
    buf = buf & strItem
   End If
  Next i
  Else
  buf = Evaluate("NumberString(" & myString & "," & opt & ")")
 End If
 Suji2Kan = buf
End Function

単独で使用する場合、

=suji2kan(A1,1,"丁目")
このようにすると、

南町一丁目23番4号
なります。
    • good
    • 0
この回答へのお礼

どうもありがとうございました。
完璧でした。このまま使わせていただきます。m(__)m

お礼日時:2005/07/02 10:47

>丁目の最初の数字だけを漢字に、他はそのまま


丁目までとそれ以後を2列に分離します。そして左列(前の部分)だけを
私の関数で漢字にしてください。
2列に分離するやり方(関数は)
田町1丁目2-3田町1丁目
田町1-2-4田町1
上行のタイプは=LEFT(A1,FIND("丁目",A1)+1)
下の行のタイプでは=LEFT(A2,FIND("-",A2)-1)&"丁目"
です。後者で、住所原データによって、式の中の""の中の文字のハイフンの半角、全角を合わせて変えてください。
    • good
    • 0
この回答へのお礼

なるほど。
どうもありがとうございました。

お礼日時:2005/07/02 10:56

ためしに私も作ってみました。


マウスで範囲を選択して、変換させます。
単独の関数ですと、


A1:          B1:
東京都港区赤坂6丁目  =suji2kan(A1)
            (東京都港区赤坂六丁目)

12,345          =suji2kan(A10,2)
             (壱萬弐阡参百四拾伍)

のようになります。仕様はほとんどNumberstring関数と変わりはありません。

'<標準モジュール>
Sub Arabic2KanHenkan()
Dim c As Range
'設定:右となりにいくつ?(例:1つ右となりへ出力)
Const Migi As Long = 1
'範囲をマウスで選んでください
 For Each c In Selection
  If Not IsEmpty(c) Then
   If IsNumeric(c.Value) Or c.Value Like "*[0-9|0-9]*" Then
    c.Offset(, Migi).Value = Suji2Kan(c.Value)
   Else
    c.Offset(, Migi).Value = c.Value
   End If
  End If
 Next
End Sub
'
Function Suji2Kan(ByVal myString As String, _
        Optional opt As Long = 1)
 'Suji2Kan(文字列, [1 =一万二千三百四十五,2=壱萬弐阡参百四拾伍, _
  一二三四五] ただし、非数字が入ると、2と3のみになる
 Dim strItem As String
 Dim buf As String, i As Long
 If Not myString Like "[0-9|0-9]*" Then
  For i = 1 To Len(myString)
   strItem = Mid$(myString, i, 1)
   If strItem Like "[0-9|0-9]" Then
    buf = buf & Evaluate("NumberString(" & strItem & "," & opt & ")")
    Else
    buf = buf & strItem
   End If
  Next i
  Else
  buf = Evaluate("NumberString(" & myString & "," & opt & ")")
 End If
 Suji2Kan = buf
End Function
    • good
    • 0
この回答へのお礼

ありがとうございました。
コピペで、使わせていただきました。

お礼日時:2005/07/01 10:26

#3です。


>文章的な中での話なら、VBAで簡単にできます
と書いたものの
ユーザー関数です。
Function tokanj(a)
x = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
y = Array("〇", "一", "二", "三", "四", "五", "六", "七", "八", "九")
z = StrConv(a, 8)
For i = 0 To 9
z = Replace(z, x(i), y(i))
Next i
tokanj = z
End Function
VBEの画面で、標準モジュールを挿入し、上記を貼り付ける。
A1に南町1丁目23番4号があるとして(半角数字でもよい)
B1に式=tokanj(A1)と入れます。
結果は南町一丁目二三番四号
となります。関数感覚で使えます。
上記三->参、一->壱などにもなります。
Array()の中を変えれば、ほかにも語句->語句にも変えられます。
エクセル2000以上のVERであること。
役に立つでしょうか。

この回答への補足

どうもありがとうございました。
できました。

ちなみに、
南町1丁目23番4号とあった場合
南町一丁目23番4号にできますか?
丁目の最初の数字だけを漢字に、他はそのまま。

補足日時:2005/07/01 10:23
    • good
    • 0

#3>文章中なんです


そういうのって、過去にも似たような事例がありました。
http://okweb.jp/kotaeru.php3?qid=1138479
http://okweb.jp/kotaeru.php3?qid=1133703

参考URL:http://okweb.jp/kotaeru.php3?qid=1138479,http://okweb.jp/kotaeru.php3?qid=1133703
    • good
    • 0
この回答へのお礼

参考させていただきます。
どうもありがとうございました。

お礼日時:2005/07/01 10:29

隠しワークシート関数「NUMBERSTRING」を使って、変換できます。



=NUMBERSTRING(123,1)  ⇒ 百二十三
=NUMBERSTRING(123,2)  ⇒ 壱百弐拾参
=NUMBERSTRING(123,3)  ⇒ 一二三

参考URL:http://pc21.nikkeibp.co.jp/tech/excel36/29/,http …
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2005/07/01 10:30

有名な例なので


http://www.comrade.co.jp/ftp/pg1/manual/FormIO/F …
をご覧ください。
文章的な中での話なら、VBAで簡単にできます。

この回答への補足

>文章的な中での話なら、VBAで簡単にできます。

文章中なんです。

たとえば、住所などです。

東京都港区赤坂6丁目→東京都港区赤坂六丁目にしたいんです。

補足日時:2005/06/29 22:07
    • good
    • 0

こんにちは



セルの書式設定で
分類 = ユーザー定義
種類 = [DBNum1] (直接入力してください)
    • good
    • 0
この回答へのお礼

どうもありがとうございました。

お礼日時:2005/07/01 10:28

セルの書式設定で


分類(その他)~種類(漢数字)を選ぶとできます。

この回答への補足

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

>セルの書式設定で
分類(その他)~種類(漢数字)を選ぶとできます。

ないんです。
郵便番号と電話番号と正負記号の3つしかないんです。
追加できるのでしょうか?

補足日時:2005/06/28 20:50
    • good
    • 0

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