• ベストアンサー

Excelの番号変換について

Excelで、あるセルに番号を入力すれば、別表からその番号に対応する情報を抜き出し、 番号を入力したセルが、自動的にその情報に変わるということは、可能でしょうか。 例)B1セルに、「1」と入力します。別表は、1.東京都、2.横浜市、3.川崎市 となっているとします。すると、B1セルの文字が「東京都」と変わるようにしたいの です。 おそらく、VBAを使えば可能だとは思うのですが。 ご教授お願いします。

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

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

#5のmshr1962です。 マクロの1例ですが... Private Sub Worksheet_Change(ByVal Target As Range) Dim Ln As Integer For Ln = 1 To 100 Select Case Cells(Ln, 2).Value Case 1 Cells(Ln, 2).Value = "東京都" Case 2 Cells(Ln, 2).Value = "横浜市" Case 3 Cells(Ln, 2).Value = "川崎市" End Select Next End Sub ------------------------- 上記は B1:B100を対象に置換するように設定しています。 特定のセルの場合はB1ならCells(1,2)の様にしてFOR..Nextの行を外してください。 Caseの部分を増やせば設定は可能です。

ogrlism
質問者

お礼

結局、7種類ぐらいの表からそれぞれまとめねばなりませんので、 Case(Ln,2)の2の部分が、多くなってしまいましたが(しかも、それぞれの Caseが10通り)、まぁがんばって作ってみます。 ありがとうございました。

その他の回答 (8)

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.9

#3です。 標準モジュールに入れたのなら、 sheets("sheet1").select を private sub ・・・・の次に入れてください。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.8

こんにちは。maruru01です。 私もマクロの一例です。 No.3の方と同様、EF列に一覧表を作成して置きます。 そして以下のプロシージャを当該シートのシートモジュール内に記述します。 (No.3、No.7の方の回答も同様にシートモジュールに記述しますよ) Private Sub Worksheet_Change(ByVal Target As Range)   Dim i As Long   Dim rg As Range   Dim temp As Variant      For i = 1 To 100     Set rg = Application.Intersect(Target, Cells(i, 2))     If Not rg Is Nothing Then       temp = rg.Value       If Application.WorksheetFunction.CountIf(Range("E:E"), temp) > 0 Then         Application.EnableEvents = False         Cells(i, 2).Value = Application.WorksheetFunction.VLookup(temp, Range("E:F"), 2, False)         Application.EnableEvents = True       End If     End If   Next i    End Sub ちなみに、No.7の方と同様にB1:B100を対象にしてあります。

  • Turbo415
  • ベストアンサー率26% (2631/9774)
回答No.6

単純にいうと、B1に数値を入れるとB1自体が変化するのですよね。でしたらご自分がおっしゃるとおり、VBAじゃないと無理です。VLOOKUP関数だとB1に数値を入れてC1に該当値を出すことは出来ますが、入れた数値自体を自動で変化させることは出来ません。また、VBAでも一度数値を入れてからマクロを起動しないと変化しませんから数値を入れてエンターを押すと何もしないで変化するというのは難しいです。#3の方のやり方でもマクロを実行掛けないと変化しませんし、#1や#2の方の物だとB1セル自体は変化するようにならないです。

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

内容が3つまでなら表示形式でも対応できます。 表示形式をユーザー定義にして [=1]"東京都";[=2]"横浜市";"川崎市" 上記で1で東京都、2で横浜市、それ以外の数値で川崎市になります。 上記以外だと他の方も言われるように別セルに VLOOKUPやCHOOSE関数を使って表示するようにした方がいいと思います。 同じセルだとあなたも言われるようにVBAしかありません。

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.4

#3です。 a=cells(1,2)はいりませんでした。 省略してください。

  • Zero_0
  • ベストアンサー率35% (72/201)
回答No.3

基本部分だけです。 Private Sub Worksheet_Change(ByVal Target As Range) a = Cells(1, 2) j = 1 While Cells(j, 5) <> "" If Cells(j, 5) = Cells(1, 2) Then Cells(1, 2) = Cells(j, 6) j = j + 1 Wend End Sub 変換情報はE、Fに入れます。 E1に1、F1に東京都 E2に2、F2に横浜市 E3に3、F3に川崎市 と続けます。E列が空欄になるまで検索します。 なお、番号の入力はB1の部分しか作成していません。 該当する番号がなければ数値は変わりません。

ogrlism
質問者

お礼

ありがとうございます。 早速、標準モジュールのModule1に入れてみたのですが、 どうもうまく作動しません。 E1に1、E2に2を入れ、F1に東京都、F2に横浜市を入れました。 そして、B1に1を入力したのですが、うまく変換しません。 R1C1形式でないと直らないのかと思い、設定を変えたのですが、どうもうまく作動しません。 もちろん、Module1は、該当のファイルのところです。 どんな理由が考えられますでしょうか?

noname#129708
noname#129708
回答No.2

VBAなんて使わなくても、「VLOOKUP」で出来ますよ。 別表に A B 1 東京都 2 横浜市 などと書いていきます。 ン~、 VLOOKUP関数をちょっと勉強してください。 「1」と入力しただけで、その横には「東京都」と表示されますよ。

ogrlism
質問者

補足

「横には」では困るんです。 B1セルに「1」と入力したら、その文字列が「東京都」とならねば困るんです。 例えば、ユーザー定義の表示形式を使って、 [=1]"△";[=2]"○"; などとすれば、あるセルに1を入力すれば、それを自動的に変換してくれますよね? ただ、この方法だと3個までしか、変換の定義をしてくれなかったと思うんです。 何かいい方法は、ございませんでしょうか。

回答No.1

VLOOKUPで可能です。 別表がどこにあるか書いてないので例示しにくいですが参考URLを見ていただければ分かると思います。

参考URL:
http://homepage1.nifty.com/kenzo30/ex_kisotyu/ex_ks_tyukyu9_9_4.htm

関連するQ&A

  • EXCELのコピーについて・・・

    3つのセルに入力してある情報を1つのセルにまとめてコピーする事は可能でしょうか?? 例えば・・・A1のセルに神奈川県 B1のセルに横浜市C1のセルに本牧って入力してあるとしてそれをD1のセルに神奈川県横浜市本牧となるようにしたいんです。 あと・・・もしA1~A50までに「東京都」から始まる住所が入力されていたとしてそのA1~A50までの全てのセルから「東京都」という文字だけ削除する事って 可能でしょうか??? ちょっと分かりづらい説明ですみません。 どうかお願いします!!!

  • エクセルにて関数を使った表を作成したいのですが・・

    エクセルにて関数を使って、例として (東京都台東区)と入ったセルがあります それと別表に 東京都は1 宮城県は2となっている表があります。 東京都台東区と入ったセルの隣に数式を入れ1と返したいのです。 そのような関数でするとすればどのような数式でしょうか? 図の例をいれさせていただいたのでなんとかお願いします

  • エクセルでリストから選択する

    リストから選択のやり方はわかるのですが たとえばA1のセルで47都道府県のリストから東京都を選択すると B1のセルでは23区のリストが出てきて選択できるようにするには どうしたらよろしいでしょうか? 意味通じますか? A1で神奈川県を選択すると B1は23区ではなく横浜市や川崎市から選択できるようになるやり方です。 ご回答よろしくお願い致します。

  • EXCELで 文字列に一致しない場合の合計

    以下の表からEXCELの関数でA列から「東京都」の文字列を含む場合のB列の合計値と含まない場合のB列の合計値を出す関数を教えてください。 A      B 東京都港区 200 東京都北区 124 東京都大田区 100 横浜市緑区 99 川崎市幸区 90

  • エクセルの円グラフの作成が分かりません

    Aに番号、Bに名前、Cに住所が入っており、住所ごとの円グラフを作りたいのですが、やり方が分からず困っております。。 住所は横浜市××区というくくりが多く、何区の人が多いのかを円グラフにしたいです。 でもそればかりではなく、中には横浜市外(川崎市や海老名市)だったり東京都も何件か入っています。 意味が分からなければ補足します。。 どなたか教えて下さい!! よろしくお願いします。

  • エクセルでリスト選択を階層化する方法

    エクセルで、顧客管理シートを作っています。 Aセル  Bセル  Cセル 東京都 -千代田区-大手町          -永田町     -中央区 -日本橋 神奈川県-川崎市 -麻生区          -高津区 このように、 Aセルに東京都と入力されたら、Bセルで入力 できるのは千代田区か中央区とし、 Bセルで千代田区と入力したらCセルに入力 できるのは大手町か永田町としたいのです。 (選択リストはシートに記述されているもの とします) データの入力を手入力ではなく、リストから 選択する方法はわかったのですが、 このように階層構造になっているリストを実現 する方法がわかりません。 VLOOKUP関数とか使えばよいのかなとおもった のですが、わかりませんでした。 どのようにすればよいのでしょうか? よろしくおねがいたします。

  • エクセルVBAについて

    エクセルVBA についての質問です。 この問題の答えを教えて頂きたいです。 次の条件を満たすプロシージャを作成してください。 1、ダイアログボックスに最初に市外局番なしの電話番号を入力すると、 先頭に小文字の「a]をつけた電話番号が自動的に、セルB3に入力される。 2、ダイアログボックスでキャンセルを押すと、 電話番号を入力してください、というメッセージボックスが表示される。 3、セルB3の値が「a1234567890」のとき、セルB3が赤の太字になり、 さらにセルC3に「検証用です」と入力される。 この問題の正解となる式を教えてください。 どこが間違っているかがわからず困っております。 よろしくお願いいたします。

  • エクセルでセルの結合

    質問です。 エクセルでセルの結合をした後、両方のセルの内容を表示することはできますか? 例:A1東京都B1新宿区を結合して 東京都新宿区のように。 100件以上をこのように入力しなおすことになってしまいそうなので。。。 どなたか教えていただけますでしょうか。

  • 郵便番号変換ウィザードをDLしたいのですが?

    よろしくお願いします。 郵便番号変換ウィザードをDLしたいのですが、その方法をお教え下さい。マイクロソフトのダウンロードセンターまでは行けるのですが、そこからどのように進んだらよいのでしょうか?お願いします。 それから、エクセルでA1セルに郵便番号を入力して、B1セルに住所を自動的に入力する方法もお願いします。エクセル2002です。 初心者で申し訳ありません。

  • エクセルの配列

    エクセルの配列を使用しての関数がうまく出来なくて困っています。    A   B  C 1  1  1  東京都墨田区 2  1  1  東京都神奈川区 3  1  2  東京都杉並区 4  1  2  神奈川県横浜市 5  1  3  神奈川県川崎市 6  1  3  東京都多摩市 7  2  1  岩手県 8  2  1  大阪府 9  3  2  兵庫県 10  3  2  京都府 と並んでいます。 ここでA列=1 且つ B列=1又はB列=2 且つ C列が"東京都"という文字を含んでいる の総計を計算したいのですが(上の状態ならば「3」) {=SUM(SUMPRODUCT(IF(A1:A10=1,1,0))*(IF(OR(B1:B10=1,B1:B10=2),1,0))*(ISNUMBER(FIND("東京都",C$1:C10))))} と関数を入れても正しい値が出ません。どこがおかしいのでしょうか? 作業列を使わずに求めたいです。 どなたかご教授宜しくお願いします。

専門家に質問してみよう