過去ログ

                                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
 ───────────────────────────────────────  ■題名 : Re:セルに入力した値に対応する文字列を表示  ■名前 : カド  ■日付 : 02/10/23(水) 12:50  -------------------------------------------------------------------------
   ▼E51 さん:

入力用シートとコード表に、種別とコードを足した処理用の列を追加されてはどうでしょう。
これでダメならこれ以上私は答えれません。あしからず


[入力用シート]
 種別 コード 処理用    名称
 AA 222 AA222 (*)ここに自動的に該当する名称を表示

[コード表]
 種別 コード 名称   処理用
 AA 111 あああ  AA111
 AA 222 いいい  AA222
 BB 111 かかか  BB111
 BB 222 ききき  BB222
 ───────────────────────────────────────  ■題名 : DGET関数では?  ■名前 : ichinose  ■日付 : 02/10/23(水) 18:41  -------------------------------------------------------------------------
   ▼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のデータベース関数を参照してください。
 ───────────────────────────────────────  ■題名 : 単純なマクロ版  ■名前 : Jaka  ■日付 : 02/10/24(木) 9:54  -------------------------------------------------------------------------
   こんにちは。
一応マクロ版を作ってみました。
入力用シートモジュールに書いてくだサい。
シート名は、変更しないで下さい。[入力用シート]と[コード表]固定。
尚、一括して複数のセルを変更した場合には、対応してません。
マクロで、関数を作ろうとしたんだけど、うまくシート名を取得できなかった(知らないだけだと思う)。


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
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 251