• ベストアンサー

エクセルで数字を半角カタカナに変換

エクセルで数字を半角カタカナ 1→ア、2→イ、3→ウ、4→エ、5→オ 6→カ、7→キ、8→ク、9→ケ、0→コ、 ト → おなじ数字が続く時 に置き換えたいのですが、巧くいきません。 マクロが出来ないので、関数を組み合わせたりしましたが、全然ダメです。 例) 12500 → アイオ(最後にゼロが続く時はゼロを無視) 120500 → アイコオ 22800 → イトク 220800 → イトコク 800600 → クコトカ こんな感じですが、なかなか巧くいきません。お教え下さい。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

ユーザー定義関数を作りました。 Alt + F11で表示されるダイアログで「挿入」「標準モジュール」で追加した場所に 下記コードをコピーしてお試しください。 ※使用法は=NKANA(セル座標または数値) Function NKANA(NM As Long) As String Dim NMX As Integer, NMS, NMR As String '1次置き換え For I = 1 To Len(Format(NM, "0")) NMS = NMS & Mid("コアイウエオカキクケ", Mid(NM, I, 1) + 1, 1) Next I '00終了文字削除 NMX = 0 For I = Len(NMS) To 1 Step -1 If Mid(NMS, I, 1) = "コ" And NMX = 0 Then NMR = "" Else NMR = NMR & Mid(NMS, I, 1) NMX = 1 End If Next I '連続文字対応 NMR = NMR & " " For I = 1 To Len(NMR) - 1 If Mid(NMR, I, 1) = Mid(NMR, I + 1, 1) Then NMZ = "ト" & NMZ Else NMZ = Mid(NMR, I, 1) & NMZ End If Next I '文字セット NKANA = NMZ End Function

その他の回答 (5)

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.6

◆ANo.5のmaron--5です ◆B1の式がまちっがっていましたので訂正します B1=C1&D1&E1&F1&G1&H1&I1

question11
質問者

お礼

いやあー、色々なやり方があるのですね。皆様のお陰で考えている事が解決出来ました。 maron--5さんの回答欄をお借りして皆様にお礼申し上げます。有難う御座いました。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

◆関数による方法です    A      B       C   D   E   F   1  12500   アイオ     ア  イ  オ 2  120500  アイコオ   ア  イ  コ  オ 3  22800   イトク     イ  ト  ク 4  220800  イトコク    イ  ト  コ  ク 5  800600  クコトカ    ク  コ  ト  カ C1=IF(A1="","",MID("コアイウエオカキクケ",MID($A1/IF(RIGHT($A1,2)="00",100,1),COLUMN(A1),1)+1,1)) ★下にコピー D1=IF(COLUMN(B1)>LEN($A1)-(RIGHT($A1,2)="00")*2,"",IF(MID($A1,COLUMN(A1),1)=MID($A1,COLUMN(B1),1),"ト",MID("コアイウエオカキクケ",MID($A1/IF(RIGHT($A1,2)="00",100,1),COLUMN(B1),1)+1,1))) ★右と下にコピー B1=D1&E1&F1&G1&H1&I1&J1 ★下にコピー

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 =ConvertKataKana(A1) とします。 設定方法は、他の方が述べている通り、標準モジュールに設定します。 なんというか、どれほど、質問の日本語を忠実に再現するかっていうような内容ですね。(^^; >最後にゼロが続く時はゼロを無視 つまり、0 が続かないので、 120 -> アイコ になります。 なお、本来、配列の添え字は、1からすればよいと思う方もいるかもしれませんが、VBAでは、同じですが、別の言語ですと、1からはありませんので、あえて、0 からにしてあります。その分、ややこしいですね。 なお、当たり前ですが、サブルーチン関数にしても良いと思います。 '標準モジュール '--------------------------------------------------------------- Function ConvertKataKana(ByVal InFig As Variant) As String  Dim Figs As Variant  Dim Kanas As Variant  Dim buf As Variant  Dim strFig As String  Dim strFigBuf As String  Dim ar As Variant  Dim i As Integer  Dim j As Integer  Dim outBuf As String  Dim outChr As String  'この二つ(Figs,Kanas)の代入値には、コンマの間にはスペースを入れない  Figs = Split("1,2,3,4,5,6,7,8,9,0", ",")  Kanas = Split("ア,イ,ウ,エ,オ,カ,キ,ク,ケ,コ", ",")    If TypeName(InFig) = "Range" Then InFig = InFig.Cells(1).Value    If IsNumeric(InFig) And InFig <> Empty Then    buf = InFig   If buf Like "*00" Then    While Right$(buf, 1) = "0"     buf = Mid$(buf, 1, Len(buf) - 1)    Wend   End If  Else   Exit Function  End If  buf = CStr(buf)    For i = 1 To Len(buf)   strFig = Mid$(buf, i, 1)   If strFigBuf = "" Then    ar = Filter(Figs, strFig)    If CInt(ar(0)) = 0 Then j = 9 Else j = CInt(ar(0)) - 1    outBuf = Kanas(j)   ElseIf strFigBuf = strFig Then    outBuf = "ト"   Else    ar = Filter(Figs, strFig)    If CInt(ar(0)) = 0 Then j = 9 Else j = CInt(ar(0)) - 1    outBuf = Kanas(j)   End If   outChr = outChr & outBuf   strFigBuf = strFig '前の文字を確保  Next  ConvertKataKana = StrConv(outChr, vbNarrow) End Function

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.3

置換えを行う順番を工夫してみましょう。 1.同じ数字が続く場合を先に処理します。 2.次に数字を文字に置換え。 3.最後に文字列の最後にゼロが続いた場合(文字列の最後に”コト”)これを空白に置き換える。 1,2は普通に置換えです 3はオートフィルタを設定して、オプションから「”コト”で終わる」を選択。   文字の入力されている範囲を選択 → 編集 → ジャンプ → セル選択 → 可視セル → OK   これで文字の最後に”コト”があるセルだけが選択されるので、置換えで”コト”を空白に置き換える。 マクロやVBAが分からないのであれば、面倒ですがこの方法を試してください。

noname#140971
noname#140971
回答No.1

12500______アイオコ 22800______トクコ 220800____トコクコ 800600____クココカコ このような複雑な変換はやっぱしVBAの出番かと思いますよ! 次の手順でたれば、さして難しいことではないです。 1、[Sheet1]タグを右クリックして[コードの表示(V)]をクリック。 2、メニューの[挿入(I)]-[標準モジュール]をクリック。 3、以下のコードをコピペ。 これで、B1=SujiXfer(A1) と式を設定すれば目的を達成します。 Public Function SujiXfer(ByVal Suji As String) As String   Suji = Suji & "*"   Suji = Replace(Suji, "00*", "0*")   Suji = Replace(Suji, "00*", "0*")   Suji = Replace(Suji, "0*", "0")   Suji = Replace(Suji, "11", "ト")   Suji = Replace(Suji, "22", "ト")   Suji = Replace(Suji, "33", "ト")   Suji = Replace(Suji, "44", "ト")   Suji = Replace(Suji, "55", "ト")   Suji = Replace(Suji, "66", "ト")   Suji = Replace(Suji, "77", "ト")   Suji = Replace(Suji, "88", "ト")   Suji = Replace(Suji, "99", "ト")   Suji = Replace(Suji, "00", "ト")   Suji = Replace(Suji, "1", "ア")   Suji = Replace(Suji, "2", "イ")   Suji = Replace(Suji, "3", "ウ")   Suji = Replace(Suji, "4", "エ")   Suji = Replace(Suji, "5", "オ")   Suji = Replace(Suji, "6", "カ")   Suji = Replace(Suji, "7", "キ")   Suji = Replace(Suji, "8", "ク")   Suji = Replace(Suji, "9", "ケ")   SujiXfer = Replace(Suji, "0", "コ") End Function なお、当方、Excelを操作したことがない門外漢です。 結果は保証しますが、外しているかも知れません。

関連するQ&A

  • 3次関数y=x^3-2ax^2+a^2x (a>0)の0≦x≦1におけ

    3次関数y=x^3-2ax^2+a^2x (a>0)の0≦x≦1における最大値を求めたい。 まず、yはx=(ア)のときに極大値(イ)をとり、x=(ウ)のとき極小値(エ)をとり、さらに(ア)以外にy=(イ)となるようなxの値はx=(オ)である。 そこで、求める最大値をaの関数と考えてM(a)で表すと次のようになる。 a≧(カ)のとき M(a)=(キ) (カ)>a≧(ク)のとき M(a)=(ケ) (ク)>a>0のとき M(a)=(コ) という問題なんですが、(ア)~(オ)までは分かったんですが、 場合わけする部分がどうすれば解答にたどり着くか分かりません。 分かる方解説よろしくお願いします。 解答 (ア)a/3(イ)(4a^3)/27(ウ)a(エ)0(オ)4a/3 (カ)3(キ)a^2-2a+1(ク)3/4(ケ)(4a^3)/27(コ)a^2-2a+1

  • 発声練習英語版

    よく、俳優(の卵)やアナウンサー(志望の人たち)が、「ア・エ・イ・ウ・エ・オ・ア・オ」「カ・ケ・キ・ク・ケ・コ・カ・コ」って発声練習をしているのですが、あれを英語でやるとどうなるのでしょうか? 日本人用の「アエイウエオアオ、~」に対応する、英語の決まり文句のようなものはあるのでしょうか?

  • エクセル セルデーターの統合

    エクセルのセル(行)にあるデーターを統合したいのですが・・・。 列も行もかなりあり、共通のデーターは何個かあります。下の例では、ア01とイ01です。 その他は、ア02とイ02という具合にセットになってます。 どちらかの行(ここでは1と3)にデーターをまとめる。 【例】 ***A列|B列|C列|D列|E列|F列| 1|ア01|イ01|ウ*|空白|エ*|空白| 2|ア01|イ01|空白|カ*|空白|キ*| 3|ア02|イ02|ク*|空白|ケ*|空白| 4|ア02|イ02|空白|コ*|空白|ナ*| 【完了後】 ***A列|B列|C列|D列|E列|F列| 1|ア01|イ01|ウ*|カ*|エ*|キ*| 3|ア02|イ02|ク*|コ*|ケ*|ナ*| このような、データーの簡単な結合方法は、ありませんか?

  • たんぱく質の代謝の問題について

    炭水化物はブドウ糖などの「ア」になり吸収され「イ」に運ばれ「ウ」として蓄えられる。一部のブドウ糖は血液中に入り「エ」などの組織に運ばれ、肝臓と同様にウに合成され、蓄えられる。このウはエを動かすときの「オ」供給に使われる。 ウは「カ」においてビルビン酸となり。その後「キ」を経て酸化され「ク」と水に分解される。 エで消費されたブドウ糖は「ケ」によって全身に補給される。血糖値が低下すると肝臓に蓄えられていた「ウ」が分解されて「コ」になり血液中に放出される。 の空欄を埋めろという問題です。 ア: イ:肝臓 ウ:グリコーゲン エ: オ: カ: キ: ク: ケ: コ: とまだ分らないところが沢山あります。 ビルビン酸が何なのかも分りません。 よろしくお願いします。

  • 数学IIの問題を教えてください

    数学IIの問題を教えてください f(θ)=4sinθ+2cos2θ g(θ)=3-2/√3cosθを考える (1) g(π/6)=【イ】 (2)f(θ)=【ウ】【ヱ】sin^2θ+【オ】sinθ+【カ】 =【ウ】【ヱ】(sinθ-【キ】/【ク】)^2+【ケ】 と変形でき 0≦θ<2πにおいてf(θ)が最大になる時のθは θ=π/【コ】、【サ】/【シ】π カタカナに入る数字を教えてください

  • 三角関数が分かりません(;o;)

    明日 数学で当たるのですが 数学が嫌いなので ぜんぜん わかりません (;o;) そこで よかったら 途中の式も入れて カタカナの部分を求めるのを お願いします! △ABCにおいて、∠B=Θ、∠C=π/2、AB=2sinΘ とする。 このとき l=sinアΘ-cosイΘ+ウ =√エsin (オΘ-π/カ.)+ウ よって、Θが 0<Θ<π/2の範囲で変化するとき Lは Θ=キπ/ クのとき、 最大値ケ+√コをとる 明日までにお願いします!

  • 半角カタカナの変換で困ってます

    word2007を使っているのですが 半角カタカナに変換したときだけ文字の間隔が開いてしまいます 東京 → ト ウ キ ョ ウ といったことになってしまいます。 間隔を詰める場合はどうしたらいいのでしょうか教えてください

  • この問題の回答お願いします。

    数学のマークです。 四面体OABCにおいて、AO⊥BO、AO⊥CO、BO⊥CO、∠ABO=45° ∠CAO=60°、OB=2であるとき OA=ア CO=イ√ウ であり、四面体OABCの体積は エ√(オ)/カ △ABCの面積は キ√ク 頂点Oから△ABCに下ろした垂線の長さは ケ√(コサ)/シである。 ア= イ√ウ= エ√(オ)/カ= キ√(ク)= ケ√(コサ)/シ= という問題がよくわかりません。 どうか回答お願いします。

  • 数I 関数について

    解説をお願いします。 関数h(x)を 1≦xのときf(x)=x^2-4x+4 x≦1のときg(x)=-x^2+2と定める。 問1 -t≦x≦t(t>0)において |h(x)|= 0となるような異なるxの個数は 0<t<√アではイ個、√ウ≦t<エではオ個、カ≦tではキ個である。 また、-t≦x≦tにおける|h(x)|の最大値が2tであるとき t=ク、√ケ+コである。 問2 -2≦x≦pにおけるh(x)の最大値がpであるとき p=-サ、シ、スである。 答え ア2、イ0、ウ2、エ2、オ1、 カ2、キ2、ク1、ケ3、コ1、 サ2、シ2、ス4

  • 植物の生産構造

    植物群落の生産構造についてです。 ア:ソバ イ:スミレ ウ:アシ エ:セイタカアワダチソウ オ:ワラビ カ:ススキ キ:ダイズ ク:アカザ ケ:ゼニゴケ ウ、カはイネ科型、キ、クは広葉型だと思うのですが、 ほかはどちらの生産構造になるんでしょうか。 それともどっちともいえないんでしょうか。

専門家に質問してみよう