• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルで、「数字⇒文字」への置換はできますか?)

エクセルで数字⇒文字への置換方法とは?

このQ&Aのポイント
  • アクセスでクエリ集計ができなかったため、エクスポートしたエクセルデータから集計を行いたい場合、数字を文字に置換する方法が必要です。
  • 具体的には、都道府県毎の役職一覧の人数計算を行う際に、所属先や役職が数字に置き換えられてしまい困っています。
  • 例えば、「山田太郎さんは1の役職で002の学校に所属しています」というような表になってしまい、集計が難しくなっています。001~030を「北海道」という表示に切り替える方法を知りたいです。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

こんにちは! 参考になるかどうかわかりませんが・・・ VBAでの方法の一例です。 Sheet1にデータがあり↓の画像のようにSheet2に学校コード・役職コード・地域の表を作成しておきます。 Altキーを押しながらF11キーを押してください。VBE画面が出ますので、 標準モジュールに↓のコードをコピー&ペーストしてマクロを実行してみてください。 画像のようにSheet1のB列に学校コードを元に地域を表示するようにしてみました。 Sub test() '←この行から Dim i, j As Long Dim str1 As String Dim ws1, ws2 As Worksheet Set ws1 = Worksheets("sheet1") Set ws2 = Worksheets("sheet2") For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To Len(ws1.Cells(i, 1)) str1 = Mid(Cells(i, 1), j, 3) If IsNumeric(str1) Then ws1.Cells(i, 1) = Replace(ws1.Cells(i, 1), str1, _ WorksheetFunction.VLookup(Val(str1), ws2.Range("A:B"), 2, False)) ws1.Cells(i, 2) = WorksheetFunction.VLookup(Val(str1), ws2.Range("G:I"), 3, True) End If Next j Next i Dim str2 As String For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To Len(Cells(i, 1)) str2 = Mid(ws1.Cells(i, 1), j, 1) If IsNumeric(str2) Then ws1.Cells(i, 1) = Replace(ws1.Cells(i, 1), str2, _ WorksheetFunction.VLookup(Val(str2), ws2.Range("D:E"), 2, False)) End If Next j Next i End Sub '←この行まで まず、Sheet1のA列のセルを3文字ずつ舐めるように検索して、 3桁の数値を学校名に置換・B列の地域名を表示 その後にもう一度各セルを1文字ずつ検索して、1桁数値を役職名に置換するようにしていますので、 少し時間がかかるかもしれません。 尚、一旦マクロを実行すると元に戻せませんので、 別Sheetにコピー&ペーストしてマクロを試してみてください。 以上、参考になれば良いのですが 的外れならごめんなさいね。m(__)m

bigspring5
質問者

お礼

画像データをつけていただき、ありがとうございました。 どうも私の質問の仕方が不充分だったようで、 皆様にうまく伝わっておりませんでした。 画像を貼り付けようと思いましたが補足では画像添付できなかったので 改めて新規に質問させていただきたいと思います。 どうもすみませんでした。

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

その他の回答 (4)

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

私には質問の意図する考え方が分からないのです。 そもそも、 >(○○県の☆☆という役職の人は何人いる・・・という表を作りたいのです) これは、集計表とは言いません。それは、ただのセンテンスです。これがAccessで生成された文章が大量に存在しているような想像はさせますが、それも定かではありません。 >001~030を「北海道」という表示に切り替えられたら集計しやすいので、 本当にそうなのでしょうか? ただ、都道府県--役職 などの統計を取りたいというなら、その数字を抜き出して、それを別の列に出せばよいのだと思います。1~30であろうとも、関係ありません。それをまとめればよいのですから。文字化したら、逆に極端に集計はしにくいはずです。特に高校名などの固有名詞は、様々の表示があるので、コンピュータとしては統計の数値化させるだけでよいと思うのです。 数字という集計データが特化しているのだから、それを取り出せばよいのですし、これこそが、Excelの本領のはずです。Accessにそのような芸当は出来ないはずです。 それを具体的に数値化に特化すれば、 都道府県   役職   学校名 001      1    043 それをオートフィルタを使うなり、COUNTIFで集計すれば済みます。 その時に、問題になるのは、その文章のブレだと思います。 「001」の山田 太郎さんは「1」の役職で「002」の学校に所属しています。 というように、必ず、3つの数字が出てきて、位置が変わらないのか、とか、また、3つ以上の数字が出るのか、2つの場合もあるのか、氏名、役職、学校というキーワードが必ずあるのか、ということになるものだと思います。 数字が三桁とか一桁で識別するのは、確実ではないと思います。位置関係か、役職や学校というキーワードに着目して数字を拾うのか、どちらかに集約されると考えています。

bigspring5
質問者

補足

ご指摘の通り、説明が下手で申し訳ありません。 表を文字に表したら、よくわからなくなってしまいました。 山田 001 1 田中 001 2 鈴木 002 1 のような表があって、それについて質問する上で文字として標記してしまったので 皆様のような誤解を生じてしまいました。

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

No2の補足です。 添付画像を忘れていましたので画像をアップします。 今回は複雑な数式で文字列中の数字を置換する方法を提示しましたが、文字列に規則性があるなど、実際のデータによってはもっと簡単な対処方法が考えられる可能性もあります。 また、今回のご質問の趣旨が回答と違うようであれば、できる限り実際のデータに近いデータで文字列の内容を例示して説明してください。

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

質問の趣旨は、1つのセルに入力されている1桁と3桁の数字を含む文字列の中のそれぞれ数字に対応する役職や学校名に置換できないかということですね。 その場合は、数字と文字列の対応表を作成しておき、例えば以下のような関数で表示できます。 A2~B5セルに3桁の数字と学校名の対応表があり、A8セルに元の文字列がある場合、以下の式で学校名に置換されます。 =INDEX(SUBSTITUTE(A8,$A$2:$A$5,$B$2:$B$5),MAX(INDEX(ISNUMBER(FIND($A$2:$A$5,A8))*ROW($A$2:$A$5),))-1) この文字列を同様な方法で役職名で置換すればご希望のデータが得られます。 ちなみに、001~030までは北海道と出したい場合も、3桁の数字との一覧表があれば、以下のような数式で地名を表示させることができます。 =LOOKUP(MAX(INDEX(ISNUMBER(FIND($A$2:$A$5,A8))*ROW($A$2:A$5)-1,)),{1,31,60,90},{"北海道","東北","関東","中部"})

すると、全ての回答が全文表示されます。
回答No.1

3桁のコード(数字)がExcelの機能で数値になったのだと思います >都道府県毎に集計するには、001~030まで北海道で・・・ コード対応表を作ります。コードは昇順 B2セル =LOOKUP(A2,$D$2:$E$48)

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

関連するQ&A