Page 251 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼セルに入力した値に対応する文字列を表示 E51 02/10/23(水) 11:51 ┣Re:セルに入力した値に対応する文字列を表示 カド 02/10/23(水) 12:50 ┣DGET関数では? ichinose 02/10/23(水) 18:41 ┗単純なマクロ版 Jaka 02/10/24(木) 9:54 ─────────────────────────────────────── ■題名 : セルに入力した値に対応する文字列を表示 ■名前 : E51 ■日付 : 02/10/23(水) 11:51 -------------------------------------------------------------------------
はじめまして。質問させて下さい。 <やりたい事> 以下のシートに種別とコードを入れた際に、別シートに存在するコード表から 該当する名称を表示する。 [入力用シート] 種別 コード 名称 AA 222 (*)ここに自動的に該当する名称を表示 [コード表] 種別 コード 名称 AA 111 あああ AA 222 いいい BB 111 かかか BB 222 ききき 基本的には、セル内に関数を埋め込む形で出来るかな?と思っていたのですが、 キーとなる項目が1つであればVLOOKUP関数によって表示できたのですが、 キーが2つの場合の方法が分かりません。 関数で設定可能ですかね?それともセルが更新された際に起動するマクロを使用する しかないでしょうか? 単純な質問かもしれないですけど、どなたか分かる方いらっしゃったら教えて下さい。m(_ _)m |
▼E51 さん: 入力用シートとコード表に、種別とコードを足した処理用の列を追加されてはどうでしょう。 これでダメならこれ以上私は答えれません。あしからず [入力用シート] 種別 コード 処理用 名称 AA 222 AA222 (*)ここに自動的に該当する名称を表示 [コード表] 種別 コード 名称 処理用 AA 111 あああ AA111 AA 222 いいい AA222 BB 111 かかか BB111 BB 222 ききき BB222 |
▼E51 さん: こんばんは。 ><やりたい事> >以下のシートに種別とコードを入れた際に、別シートに存在するコード表から >該当する名称を表示する。 > >[入力用シート] > 種別 コード 名称 > AA 222 (*)ここに自動的に該当する名称を表示 入力用シートの上のデータは、A1:C2の範囲にあるとします。 > >[コード表] > 種別 コード 名称 > AA 111 あああ > AA 222 いいい > BB 111 かかか > BB 222 ききき このシートを「Sheet1」とし、A1:C5の範囲に上のコード表があったとしましょう。 > >基本的には、セル内に関数を埋め込む形で出来るかな?と思っていたのですが、 >キーとなる項目が1つであればVLOOKUP関数によって表示できたのですが、 >キーが2つの場合の方法が分かりません。 >関数で設定可能ですかね?それともセルが更新された際に起動するマクロを使用する >しかないでしょうか? > >単純な質問かもしれないですけど、どなたか分かる方いらっしゃったら教えて下さい。m(_ _)m 入力用シートのC2に、 「=DGET(Sheet1!A1:C5,3,A1:B2)」と指定して下さい(未入力や範囲にない場合の処理も必要かも)。 但し、[入力用シート]と[コード表]の一行目の見出しは、同じにしておかなければなりませんが・・・、詳しくは、HELPのデータベース関数を参照してください。 |
こんにちは。 一応マクロ版を作ってみました。 入力用シートモジュールに書いてくだサい。 シート名は、変更しないで下さい。[入力用シート]と[コード表]固定。 尚、一括して複数のセルを変更した場合には、対応してません。 マクロで、関数を作ろうとしたんだけど、うまくシート名を取得できなかった(知らないだけだと思う)。 Private Sub Worksheet_Change(ByVal Target As Excel.Range) If Target.Columns.Count <> 1 Or Target.Rows.Count <> 1 Then End End If ER = Sheets(Me.Name).Range("A1").CurrentRegion.Rows.Count Set AA = Intersect(Target, Range("A2:B" & ER)) If Not AA Is Nothing Then Select Case Target.Column Case 1 If Target.Value <> "" And Target.Offset(, 1).Value <> "" Then Celsach Target.Row, Target.Value, Target.Offset(, 1).Value Else Target.Offset(, 2).Value = "" End If Case 2 If Target.Value <> "" And Target.Offset(, -1).Value <> "" Then Celsach Target.Row, Target.Offset(, -1).Value, Target.Value Else Target.Offset(, 1).Value = "" End If End Select End If End Sub Sub Celsach(RR, MStA, MSB) Set MWs = Worksheets("入力用シート") Set SWs = Worksheets("コード表") ER = Range("A1").CurrentRegion.Rows.Count With SWs.Range("A1:A" & ER) Set SCel = .Find(MStA, LookAt:=xlWhole, MatchCase:=True, MatchByte:=True) If Not SCel Is Nothing Then FtAd = SCel.Address Do If SCel.Offset(, 1).Value = MSB Then MWs.Range("C" & RR).Value = SCel.Offset(, 2).Value Set MWs = Nothing: Set SWs = Nothing Set SCel = Nothing End End If Set SCel = .FindNext(after:=SCel) Loop Until FtAd = SCel.Address End If End With MWs.Range("C" & RR).Value = False Set MWs = Nothing: Set SWs = Nothing Set SCel = Nothing End Sub |