- ベストアンサー
エクセル関数
エクセルで 文字「あ」(セルA1)は数字の1(セルB1) 文字「い」(セルA2)は数字の2(セルB2) 文字「う」(セルA3)は数字の3(セルB3) といった具合に関数で変換したいのですが、 よい方法を教えてください。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
diashun です。 「VLOOKUP」関数の利用はどうでしょうか? Sheet1のA列にセル番地「A1」から下方に順に「あ」「い」「う」「え」「お」と入力されているとします。 Sheet1 A1 あ A2 い A3 う A4 え A5 お Sheet2のA列とB列にあらかじめ次のように入力リストを作っておきます。(この作業だけが面倒かもしれませんが・・・) A1 あ B1 1 A2 い B2 2 A3 う B3 3 A4 え B4 4 A5 お B5 5 そして、Sheet1の「B1」に次の式を入力し、これをSheet1のB2~B5までコピーします。 「=VLOOKUP(A1,Sheet2!A1:B5,2)」 これだと文字のコードに依存せずに任意の変換値を設定できます。 また、Sheet2のリストをいくらでも追加できます。 (ただし参照範囲の設定も必要)
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17070)
●#1、#3のご解答に関して。私もテストしていました。 「あーみ」までの(濁音なし、拗音・発音なし)でよいなら、 =ROUNDUP((CODE(A1)-9248)/2,0) で変換できました。その後は「ん」まで、4、5回ずれます。これでは使えないんでしょうね。 ● ユーザー関数を作れば、出来ます Function hen1(a) b = StrConv(a, vbKatakana) c = StrConv(b, vbNarrow) hen1 = Asc(c) - 176 End Function まず全角カタカナに直し、半角カタカナに変換し コード計算をしています。 濁音なし、拗音・発音なしに対応しています。 VBEの標準モジュールに貼りつけ、セルに=hen1(A1)などと いれます。下方向に複写出来ます。 ● フルに正確に変換するには、対応表を別に作って、VLOOKUPを使うしかないようです。
既に回答されているvlookup関数も便利ですが、 =FIND(A1,"あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわん") でどうでしょう?
- hinebot
- ベストアンサー率37% (1123/2963)
#1です。 #1で利用した文字コードは 小さい字(ぁ、ぃ、ぅ、ぇ、ぉ、っ、ゃ、ゅ、ょ、ゎがあります)・通常の字・濁音・半濁音 の順に並んでます。"わ"のあとは ゐ、ゑ、を、んと続きます。 なのでどこにどの文字がくるかを考慮して関数を組めば、できないことはないですが、とんでもなくややこしくなります。 通常の文字だけ変換するのであれば、#4さんの案のようにVLOOPUP関数で表から拾うようにするのが、一番簡単かもしれません。(表をつくるくらいなら、変換式は不要かも知れませんが^^;)
- hinebot
- ベストアンサー率37% (1123/2963)
#1です。 済みません。#1の式ですと (ぁ→0) あ→1 ぃ→2 い→3 ぅ→4 う→5 ぇ→6 え→7 ぉ→8 お→9 か→10 が→11 き→12 … という対応になってしまいます。 小さい字(ぁ、ぃ、ぅ等)と濁点のついた字を飛ばすのであれば、別の方法が必要ですね。失礼しました。
- noriemon
- ベストアンサー率35% (5/14)
No1の方の補足ですが、 =ROUNDUP((CODE(A1)-CODE("あ")+1)/2,0) ではどうでしょう?
- hinebot
- ベストアンサー率37% (1123/2963)
B1:=CODE(A1)-CODE("あ")+1 B2:=CODE(A2)-CODE("あ")+1 以下同様 でどうでしょう?