[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VLOOKUPを用いない検索方法(セルに関数はない)』(ひ)
Sheet1に
A1 簡単品番
B1 正式品番
C1 品名
という列タイトルにしてそれぞれ以下に対応データが入力されているものとします。
簡単品番は4桁の数字、正式品番はローマ字数字が複雑に入り込んだものです。
次にSheet2に
A1 正式品番
B1 品名
という列タイトルを用意し、A2に、正式品番ではなく簡単品番を入力したとします。品名はVLOOKUPで入力が可能かと思いますが、A2に4桁の数字である簡単品番を入力してエンターを押した時に、そのA2の内容が、簡単品番に対応する正式品番にすりかわるというのか、別セルに移動した瞬間に入れ替わることはできますか?
会社でそのようなブックを見たのですが、どのように成り立っているかわからず、また理解している人もいないので気になっております。Sheet2のA2以下のセルに関数は入っていませんでしたし、入っていたにしても上から簡単品番を入力すれば元のセルの中身は消えてしまうと思うのです。
私個人は、やり方としては簡単品番入力で、正式品番も品名も別セルにVLOOKUPで検索データを入力する、というやり方しかわかりません。
まずはどのようにそれが処理されるか原理?を知りたいです。
< 使用 Excel:Excel2013、使用 OS:Windows7 >
これは、セル内容(セルの値ですね)に変更があったとき自動で実行されるマクロです。
ユーザーがそのマクロを設定することができます。
セル内容がユーザーの入力などで変化したとき、
・どのセルで変更が起きたか
がExcel側から知らされますから、
それをもとに、
・それがA列にあるかどうかを調べて、
・簡易番号をもとにして、(VLOOKUPでもよいでしょう)正式番号を取得して
・そのセルの値を正式番号に置き換える、
といった処理をそのマクロで行えば良いでしょう。
マクロを知っているなら、
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html
などを参考に勉強してみてください。
(γ) 2017/02/18(土) 12:03
表示された画面の一番大きな枠(?)に以下のコードをコピペ
Private Sub Worksheet_Change(ByVal Target As Range)
Dim m As Variant Dim Rng As Range
If Target.Address(False, False) <> "A2" Then Exit Sub Set Rng = Sheets("Sheet1").Range("A1").CurrentRegion m = Application.Match(Target.Value, Rng.Columns(2), 0) If IsError(m) Then m = Application.Match(Target.Value, Rng.Columns(1), 0) End If If IsError(m) Then Me.Range("A2:B2").ClearContents Else Application.EnableEvents = False Me.Range("A2").Value = Rng(m, 2).Value Me.Range("B2").Value = Rng(m, 3).Value Application.EnableEvents = True End If End Sub
で、そういう操作が自動で出来る(マクロ)と思います。
でも、こんなことを覚えるよりは、、、、
Match関数+Index関数でVlookupの機能を拡張できるようになる方が有用かと思います。
(まっつわん) 2017/02/18(土) 12:23
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.