• 締切済み

エクセルで文字を数値に変換したい!

現在、1セルに1文字(あ~ん)が入っている表があるのですが、この文字たちを数字に変換したいのですが、どんな関数を使えばいいのでしょうか?   A B  C D E  1 エ ン ブ レ ム  → 4 5 3 4 3 2 リ フ ト       → 2 3 5 といった具合にあ行 1 い行 2 ウ行 3 エ行 4 お行 5 なのです。 ただし、「ん」だけ前に文字の次の行、前の文字がオ行の場合、1に戻るなのですが。 よろしくお願いします。

みんなの回答

回答No.3

こんにちは。 データテーブルを用いて、ひらがなと対応する数字を定義し、そのデータテーブルから検索するのが手っ取り早いです。 以下ソースです。 '変数宣言 Dim ひらがな一覧 As DataTable = Nothing Dim 検索ひらがな As String = "あ" Dim 検索結果 As DataRow = Nothing Dim 数字 As Integer = 0 'テーブル初期化 ひらがな一覧 = New DataTable 'テーブルにカラムを作成 ひらがな一覧.Columns.Add("段", GetType(String)) ひらがな一覧.Columns.Add("数字", GetType(Integer)) '各段のひらがなと、対応する数字を登録 ひらがな一覧.Rows.Add("あかさたなはまやらわん", 1) ひらがな一覧.Rows.Add("いきしちにひみりゐ", 2) '以下省略 ' ' 'テーブルを検索 検索結果 = ひらがな一覧.Select("段 LIKE '%" & 検索ひらがな & "%'").GetValue(0) 'ひらがなに対応する数字を取得 数字 = 検索結果("数字")

全文を見る
すると、全ての回答が全文表示されます。
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

遊びで作ってみました。アクティブシートのカタカナを1~5(場合によっては0)の数字に変換します。 もし、ひらがなも対象でしたら、Function fAiueo()内の sOne = StrConv(sTarget, vbNarrow) の上に sTarget = StrConv(sTarget, vbKatakana) を加えてみてください。 また、初めの文字が「ン」の場合は1、「ー」の場合は0に変換します。 Sub Sample()   Dim R As Range   Dim nBefore As Long   Dim nRtn As Long      nBefore = 0   For Each R In ActiveSheet.UsedRange     If R.Value <> "" Then       nRtn = fAiueo(R.Value)       If nRtn > 0 Then          '--- 「ン」         If nRtn = 6 Then           nRtn = nBefore + 1 - 5 * (nBefore = 5)         End If         '--- 「ー」         If nRtn = 7 Then           nRtn = nBefore '前の文字と同じとする         End If                nBefore = nRtn         R.Value = nRtn           End If     End If   Next R End Sub Function fAiueo(sTarget As String) As Long   Dim nCode As Long   Dim sOne As String   Dim nCheck As Long      fAiueo = 0   If sTarget = "" Then Exit Function      '-----半角カタカナにした上で1文字目を取得   sOne = StrConv(sTarget, vbNarrow)   sOne = Left(sOne, 1)   If sOne = "ヮ" Then sOne = Chr(220)   If sOne = "ヴ" Then sOne = Chr(179)     '-----カタカナは文字コード166~221   nCode = Asc(sOne)   If (nCode < 166) Or (nCode > 221) Then Exit Function   '--- 「ン」   If nCode = 221 Then     fAiueo = 6     Exit Function   End If   '--- 「ー」   If nCode = 221 Then     fAiueo = 7     Exit Function   End If   '----- 文字コードの1の位で判別   nCheck = nCode Mod 10   Select Case nCheck     Case 0       fAiueo = 4       If nCode = 220 Then fAiueo = 1         Case 1       fAiueo = 5           Case 2       fAiueo = 1        Case 3       fAiueo = 2       If (nCode = 173) Or (nCode = 213) Then fAiueo = 3           Case 4       fAiueo = 3       If (nCode = 174) Or (nCode = 214) Then fAiueo = 5       If nCode = 9584 Then fAiueo = 2     Case 5       fAiueo = 4       If nCode = 215 Then fAiueo = 1       If nCode = 175 Then fAiueo = 3     Case 6       fAiueo = 5       If nCode = 216 Then fAiueo = 2       Case 7       fAiueo = 1       If nCode = 217 Then fAiueo = 3     Case 8       fAiueo = 2       If nCode = 218 Then fAiueo = 4      Case 9       fAiueo = 3       If nCode = 219 Then fAiueo = 5     Case Else       fAiueo = 0   End Select End Function

全文を見る
すると、全ての回答が全文表示されます。
  • nao-y
  • ベストアンサー率58% (111/190)
回答No.1

入っている文字はカタカナだけということよろしいでしょうか? ぱっと思いつくのは文字コードを使うことですが、 カタカナの文字コードと各段との関連性はありませんね。 代わりにこんな方法は、いかがでしょうか。 1.五十音表を用意する。  シート「五十音」を追加し、  A1セル→“アカサタナ…”→つまり、ア段+“ン”(拗音、撥音、濁音、半濁音も忘れずに)  A2セル→イ段  A3セル→ウ段  A4セル→エ段  A5セル→オ段 2.番号を入れたいセルに次の式を入れる。 =IF(ISERROR(FIND(A1,五十音!$A$1,1)),IF(ISERROR(FIND(A1,五十音!$A$2,1)),IF(ISERROR(FIND(A1,五十音!$A$3,1)),IF(ISERROR(FIND(A1,五十音!$A$4,1)),IF(ISERROR(FIND(A1,五十音!$A$5,1)),"",5),4),3),2),1) ↑の式の“A1”は調べたい文字が入っているセルです。 2の式はもっとスマートにできると思いますが、ちょっと私にはわからないです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • <エクセル>数値の変換

    横約50列,縦5000行以上の表があり、最上列と最左行を除いては大半に数字が入力されています。 数字の「0」が入力されているところを空欄にしたく、 変換→置換→「検索する文字列 0 」「置換後の文字列(何も入力せずカーソルを置いただけ)」→すべて置換 にすると、 0 は空欄になって、こちらの思ったとおりになるのですが、 10 → 1 101 → 11 -20 → -2 0.5 → 0.5 -0.8 → -0.8 などと、もとの数字が壊れてしまうことがあります。 オートフィルーターや並べ替えで、「0」のみを消す方法もありますが手間がかかります。 1回で簡単に消す方法があれば知恵を貸してください。

  • エクセルで連続文字を文字に変換したい。

    エクセルで連続文字を文字に変換したい。 例:A1のセルに連続数字を打つと下のように変換できる関数を教えてください。    010→A先生 020→B先生 030→C先生・・・・・・    (全部で40人の先生を変換したいです)

  • 途中にある一文字を削除したい

    英字と数字のセルがあります。 そこから特定の英字をひとつだけ削除したいのです。 例 ABCD12345 → ABC12345 AMDD29384 → AMD29384 ERKGD45096E → ERKG45096E となるようにです。Dの文字をひとつ削除します。 数字の並びも変則です。英字はだいたい3~6文字ぐらい、数字は6桁ぐらいで、数字の後に英字が1文字ついてるものもあります。 1000行ぐらいあります。 簡単に変換できる方法がありましたら教えてください。 よろしくお願いします。 自分が考えたのは、LFET関数で英字の文字を表示し、LEN関数でその文字数を数え(これは行を分別しやすいように)、REPLACE関数で何文字目を指定し、その指定文字(この場合はD)を空白に変換し、置換で空白をなしにするものです。

  • エクセル関数

    エクセルで 文字「あ」(セルA1)は数字の1(セルB1) 文字「い」(セルA2)は数字の2(セルB2) 文字「う」(セルA3)は数字の3(セルB3) といった具合に関数で変換したいのですが、 よい方法を教えてください。

  • 文字列が数値に変換されない

    文字列の数字をVALUE関数で数値に変換したくても数値になりません。 ♯N/Aと表示されるだけです。 関数を入れたあとに表示形式を数値にしても変わりません。 元の文字列はVLOOKUP関数で検索した数字です。 これができないと仕事が進みません。急いでます。お願いします。

  • 入力されているセルの個数を数えるには?

    エクセル2003で表を作成しました。指定した文字を含むセル以外で、入力されているセルの個数を数えるにはどの関数を使えばいいでしょうか?   A   B   C  D   E   F   G 1   アい 2 3     フて   イろ 4 5     エじ 「ア」を含むセル以外で、文字が入力されているセルの個数は?

  • エクセルで行から数値を検索し、検索した数値のある列

    エクセルで行から数値を検索し、検索した数値のある列から左側の全ての合計を求めたいです。   A B C D E F 1  3 4 8 9 11 22 ←数字は隙間なくあるが、値がバラバラ(ただし昇順) 2 3  2~6行には色々な数字がまばらにある 4 5 6 1行目から検索したい数→10(別のセルで数式結果として出た数) ズレてるかもしれませんが・・・ E1セルに書かれている「11」の数字より前のD列、 A~D列の2行目~6行目の合計を各行ごとに別々に出していきたいです、どうしたらいいでしょうか また、表は行も列もデータを追加していく予定です

  • 指定の文字列を指定の数値に変換する方法

    エクセル2002で、指定の文字列を指定の数値に変換する方法を教えて下さい。 下記から、数字を文字列に変換する方法はみつけたのですが、逆ができません。。 [書式(O)]→[セル(E)...]→[セルの書式設定]→[表示形式]→[分類(C)]→[ユーザー定義]内。 [=1]"ABC";[=2]"赤青黄色";"未定" もちろん、関数でもかまわないのですが、適当なものが見つかりません。 例えば、こんな感じに変換。 ABC     →1 赤青黄色     →2 大根にんじん →3 昼休み    →4 放課後   →5 よろしくお願いします!

  • excelであるセル内の数値をある文字に変換したい

    excelで、ある列のセルにある数値の内、ある指定範囲内の数値のみある文字列に変換したい場合、どんな方法(関数やマクロ)があるでしょうか? 例として 10 20 100 →XX 1000→XX XX 50 100以上をXX(範囲外)に変換したい

  • エクセルで特定の文字を見つけたら数値に変換したいで

    セルに特定の文字を入力したら10と認識させたいのです。 たとえば、セルA1に数字でなく文字を入力すると隣のB1に10、C1も10、D1も10・・・というようにしてB1+C1+D1+E1でF1に合計の40が表示されるようにしたいのです。B1、C1、D1は空白にしたいです。A1の隣から10が発生するようにしたいのです。文字は『OPEN』という文字が入ってるときにそうさせたいのです。 説明がわかりづらいかもしれませんがどうぞよろしくお願いいたします。