遊:ひらがなを数字にする - エクセル関数の使い方
47進いろは記数法というのがありますが
いまさら「いろはにほへと」って、、
一応簡単に「47進いろは記数法」を紹介
| A | B | C | D | E |
1 | | | | | |
2 | | 数値 | ひらがな | カタカナ | |
3 | | 1 | い | イ | |
4 | | 2 | ろ | ロ | |
5 | | 3 | は | ハ | |
6 | | 4 | に | ニ | |
7 | | 5 | ほ | ホ | |
8 | | 6 | へ | ヘ | |
9 | | 7 | と | ト | |
10 | | 8 | ち | チ | |
11 | | 9 | り | リ | |
12 | | 10 | ぬ | ヌ | |
13 | | 11 | る | ル | |
14 | | 12 | を | ヲ | |
15 | | 13 | わ | ワ | |
16 | | 14 | か | カ | |
17 | | 15 | よ | ヨ | |
18 | | 16 | た | タ | |
19 | | 17 | れ | レ | |
20 | | 18 | そ | ソ | |
21 | | 19 | つ | ツ | |
22 | | 20 | ね | ネ | |
23 | | 21 | な | ナ | |
24 | | 22 | ら | ラ | |
25 | | 23 | む | ム | |
26 | | 24 | う | ウ | |
27 | | 25 | ゐ | ヰ | |
28 | | 26 | の | ノ | |
29 | | 27 | お | オ | |
30 | | 28 | く | ク | |
31 | | 29 | や | ヤ | |
32 | | 30 | ま | マ | |
33 | | 31 | け | ケ | |
34 | | 32 | ふ | フ | |
35 | | 33 | こ | コ | |
36 | | 34 | え | エ | |
37 | | 35 | て | テ | |
38 | | 36 | あ | ア | |
39 | | 37 | さ | サ | |
40 | | 38 | き | キ | |
41 | | 39 | ゆ | ユ | |
42 | | 40 | め | メ | |
43 | | 41 | み | ミ | |
44 | | 42 | し | シ | |
45 | | 43 | ゑ | ヱ | |
46 | | 44 | ひ | ヒ | |
47 | | 45 | も | モ | |
48 | | 46 | せ | セ | |
49 | | 0 | す | ス | |
50 | | | | | |
N進法の考え方では
2進数、8進数、16進数、60進数、すべて0から始まります
「47進いろは記数法」は47進数ではなく記数法になります
いろは48文字ですが
数えるときに0.1,2,3とは数えません
1から始めて1,2,3と数えます
1文字目、2文字目、3文字目と数えるからです
だが0が無いのはおかしいので最後の文字を0にしています
小数点「.」は「。」になります
「ん」はいろはにありませんから「す」と同じ「0」になります
濁音(がぎぐ)半濁音(ぱぴぷ)拗音(きゃきゅきょ)促音(っ)は
濁点などが付いていない元の文字と同じものとして扱われます。
上記の表をそのまま使って呼び出す
数字からひらがなを抽出する場合
=XLOOKUP(36,B3:B49,C3:C49)
=あ
数字からカタカナを抽出する場合
=XLOOKUP(23,B3:B49,D3:D49)
=ム
ひらがなを数字にする場合
=XLOOKUP("ゆ",C3:C49,B3:B49)
=39
カタカナを数字ひらがなにする場合
=XLOOKUP("メ",D3:D49,B3:B49)
=40
本題に戻ります
50音を表にして行と列で表す方法
旧 五十音図
| A | B | C | D | E | F | G | H | I | J | K | L | M |
1 | | | | | | | | | | | | | |
2 | | ん | わ | ら | や | ま | は | な | た | さ | か | あ | |
3 | | | ゐ | り | い | み | ひ | に | ち | し | き | い | |
4 | | | う | る | ゆ | む | ふ | ぬ | つ | す | く | う | |
5 | | | ゑ | れ | え | め | へ | ね | て | せ | け | え | |
6 | | | を | ろ | よ | も | ほ | の | と | そ | こ | お | |
「や行」と「わ行」に今はあまり使われない文字が含まれ
「ん」が別の列になります
これでは使えないので新しい五十音図を使います
| A | B | C | D | E | F | G | H | I | J | K | L | M |
1 | | | | | | | | | | | | | |
2 | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
3 | | 1 | あ | か | さ | た | な | は | ま | や | ら | わ | |
4 | | 2 | い | き | し | ち | に | ひ | み | | り | | |
5 | | 3 | う | く | す | つ | ぬ | ふ | む | ゆ | る | ん | |
6 | | 4 | え | け | せ | て | ね | へ | め | | れ | | |
7 | | 5 | お | こ | そ | と | の | ほ | も | よ | ろ | を | |
8 | | | | | | | | | | | | | |
「お」縦「5」横「1」なので「51」
「は」縦「1」横「6」なので「16」
「よ」縦「5」横「8」なので「58」
「う」縦「3」横「1」なので「31」
「おはよう」⇒「51165831」
これをエクセルで取得します
参照関数の
VLOOKUP関数かHLOOKUP関数ですが
先に縦で次に横なので
VLOOKUP関数を使います
・関数 | VLOOKUP |
・書式 | =VLOOKUP(検索値,範囲,列番号,検索の型) |
・内容 | 指定された範囲の左端の列で特定の値を検索し、範囲内の対応するセルの値を返します。 |
「お」縦「5」横「1」の「51」の場合
縦「5」→
検索値
横「1」→
列番号+1
=VLOOKUP(
5,
B2:L7,
2,
0) 結果:お
数値の取得方法は
MID関数を使います
・関数 | MID |
・書式 | =MID(文字列,開始位置,文字数) |
・内容 | 文字列の任意の位置から指定された文字数の文字を返します。半角と全角の区別しません。 |
1文字目)=MID(
51165831,
1,
1) 結果:5
2文字目)=MID(
51165831,
2,
1) 結果:1
3文字目)=MID(
51165831,
3,
1) 結果:1
4文字目)=MID(
51165831,
4,
1) 結果:6
このMID()で取得したのはは文字列なので
VALUE()で数値化して「VALUE(MID(51165831,1,1))」とします
VLOOKUP()の検索値に当てはめます
1文字目)
=VLOOKUP(VALUE(MID(51165831,
1,1)),B2:L7,VALUE(MID(51165831,
2,1))+1,0)
結果:お
2文字目)
=VLOOKUP(VALUE(MID(51165831,
3,1)),B2:L7,VALUE(MID(51165831,
4,1))+1,0)
結果:は
3文字目)
=VLOOKUP(VALUE(MID(51165831,
5,1)),B2:L7,VALUE(MID(51165831,
6,1))+1,0)
結果:よ
4文字目)
=VLOOKUP(VALUE(MID(51165831,
7,1)),B2:L7,VALUE(MID(51165831,
8,1))+1,0)
結果:う
| A | B | C | D | E | F | G | H | I | J | K | L | M |
1 | | | | | | | | | | | | | |
2 | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
3 | | 1 | あ | か | さ | た | な | は | ま | や | ら | わ | |
4 | | 2 | い | き | し | ち | に | ひ | み | | り | | |
5 | | 3 | う | く | す | つ | ぬ | ふ | む | ゆ | る | ん | |
6 | | 4 | え | け | せ | て | ね | へ | め | | れ | | |
7 | | 5 | お | こ | そ | と | の | ほ | も | よ | ろ | を | |
8 | | | | | | | | | | | | | |
9 | |
数値をひらがなに | |
ひらがなを数値にする | |
10 | |
数値 |
51165831 | |
ひらがな |
おやすみ | |
11 | |
ひらがな |
おはよう | |
数値 |
51183327 | |
12 | |
|
| |
|
| |
セルD11)セルD10の数値をひらがなに変換
236文字です
セルJ11)セルJ10のひらがなを数値に変換
1472文字です
ひらがなを数値にするには
表から抽出するとなると参照や検索関数の
VLOOKUPやHLOOKUP、SEARCH、INDEX、MATCHなどが考えられますが
VLOOKUPやMATCHは1列しか検索対象になりません
46文字ですから
あ=11
い=21
う=31
と1つづ定義した方が早いかもしれないが
エクセルっぽく関数を使ってみる
まず文字の取得はMID関数で
=MID("おやすみ",1,1) 結果:お
=MID("おやすみ",2,1) 結果:や
=MID("おやすみ",3,1) 結果:す
=MID("おやすみ",4,1) 結果:み
のように取得します
文字の検索は
VLOOKUPは左側取得できません
HLOOKUPは上を取得できません
なのでMATCH関数を使います
1行目から検索)=MATCH("や",C3:L3,0) 結果:8
2行目から検索)=MATCH("み",C4:L4,0) 結果:7
3行目から検索)=MATCH("ふ",C5:L5,0) 結果:6
4行目から検索)=MATCH("ね",C6:L6,0) 結果:5
5行目から検索)=MATCH("と",C7:L7,0) 結果:4
IFERRORを使ってエラー非表示でつなげれば1桁は取得できますが
何行目で取得したかは分かりませんので
IF関数とISERROR関数を使います
・関数 | IF | |
・書式 | =IF(論理式,真の場合,偽の場合) | |
・内容 | IF 関数を使用して値または数式が条件を満たしているかどうかをテストできます。 | |
=IF(ISERROR(MATCH("や",C3:L3,0)),"","1"&MATCH("や",C3:L3,0))
これでひらがなが1行目に見つからない場合偽の場合に進みます
=IF(ISERROR(MATCH("み",C4:L4,0)),"","2"&MATCH("み",C4:L4,0))
=IF(ISERROR(MATCH("ふ",C5:L5,0)),"","3"&MATCH("ふ",C5:L5,0))
=IF(ISERROR(MATCH("ね",C6:L6,0)),"","4"&MATCH("ね",C6:L6,0))
=IF(ISERROR(MATCH("と",C7:L7,0)),"","5"&MATCH("と",C7:L7,0))
ひらがなの部分に1文字目の式を入れます
=IF(ISERROR(MATCH(MID(J10,1,1),C3:L3,0)),"","1"&MATCH(MID(J10,1,1),C3:L3,0))
=IF(ISERROR(MATCH(MID(J10,1,1),C4:L4,0)),"","2"&MATCH(MID(J10,1,1),C4:L4,0))
=IF(ISERROR(MATCH(MID(J10,1,1),C5:L5,0)),"","3"&MATCH(MID(J10,1,1),C5:L5,0))
=IF(ISERROR(MATCH(MID(J10,1,1),C6:L6,0)),"","4"&MATCH(MID(J10,1,1),C6:L6,0))
=IF(ISERROR(MATCH(MID(J10,1,1),C7:L7,0)),"","5"&MATCH(MID(J10,1,1),C7:L7,0))
上の5つの式を下から偽の場合に入れます
残念ながらこれで1文字分です
この中の文字取得分部MID(J10,1,1)10か所を
次の文字MID(J10,2,1)に書き換えます
MID(J10,3,1)、MID(J10,4,1)と続けます
1472文字です
やはり46文字くらいなら
あ=11
い=21
う=31
と1つづ定義した方が早かったかもしれない
※エクセル2016以降には
IFS()関数と IFERRER()関数が使えるので
=IFS(C3=11,"あ",C3=21,"い",C3=31,"う")と
全部の文字を設定した方が早いかもしれない
以上 ひらがなを数字にするでした
新しいエクセルやEXCEL ONLINE、Googleスプレッドシートではコードで数字をひらがなやカタカナに、ひらがなやカタカナを数字に変換できます
ひらがなやカタカナ → 数字 CODE(コード)関数
数字 → ひらがなやカタカナ CHAR(キャラクター)関数
参考:→
ひらがなやカタカナを数字に変換