[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『どちらかのセルを入力すると指定セルに値が反映するようにしたい』(NIJ)
A列に商品名、B列に商品番号、C列に単価
A列かB列のどちらかを入力するとC列に単価を反映するにはどうすればいいですか?
商品名、商品番号、単価のリストは作成済みです。
理想としてはA列を入力するとと商品番号、単価が出てくる、
B列を入力すると商品名、単価が出てくるようにしたいです。
< 使用 Excel:unknown、使用 OS:unknown >
なんというシートのどの列に入っているのか教えてください。
(通りすがり) 2022/06/28(火) 10:04
VLOOKUP("検索値","範囲",列番号)
今回のケースでは入力するシートを以下のようなイメージだとすると、
A :B :C
商品名(手入力):関数1:関数2
以下のように設定し、関数1,2の箇所にそれぞれ記載すると、
A列を入力すると自動的にB,Cに入力されると思います。
・"検索値"->商品名(手入力)セル
・"範囲"->リストシート全体
・"列番号"->関数1は2,関数2は3
(rn) 2022/06/28(火) 13:22
要望はA←→Bの双方向なので関数では不可能かと思います。 マクロでチェンジイベント組むしかないと思いますが、マクロ可なのでしょうか? (.:*.ゆ ゅ) 2022/06/28(火) 13:46
対象となるシートのシートモジュールに入れてみてください。
Private Sub Worksheet_Change(ByVal Target As Range) Dim Datas, i As Long Application.EnableEvents = False With Sheets("リスト") Datas = .Range("A1", .Range("C" & .Rows.Count).End(xlUp)).Value End With With ActiveSheet For i = 1 To UBound(Datas) Select Case Target.Column Case 1 If Datas(i, 1) = Target.Value Then .Range("B" & Target.Row).Value = Datas(i, 2) .Range("C" & Target.Row).Value = Datas(i, 3) Exit For End If Case 2 If Datas(i, 2) = Target.Value Then .Range("A" & Target.Row).Value = Datas(i, 1) .Range("C" & Target.Row).Value = Datas(i, 3) Exit For End If
End Select Next End With Application.EnableEvents = True End Sub (通りすがり) 2022/06/28(火) 16:35
シートモジュール
Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False Dim rngList As Range Set rngList = Sheets("リスト").Cells(1, 1).CurrentRegion
Dim rng As Range, c As Range, m As Long Set rng = Intersect(Target, Columns("A")) If Not rng Is Nothing Then For Each c In rng If c.Text = "" Then c.Offset(, 1).Resize(, 2).Value = "" Else m = 0 On Error Resume Next m = WorksheetFunction.Match(c.Value, rngList.Columns("A"), 0) On Error GoTo 0 If m = 0 Then c.Offset(, 1).Resize(, 2).Value = "" Else c.Resize(, 3).Value = rngList.Rows(m).Value End If End If Next End If Set rng = Intersect(Target, Columns("B")) If Not rng Is Nothing Then For Each c In rng If c.Text = "" Then c.Offset(, -1).Value = "" c.Offset(, 1).Value = "" Else m = 0 On Error Resume Next m = WorksheetFunction.Match(c.Value, rngList.Columns("B"), 0) On Error GoTo 0 If m = 0 Then c.Offset(, -1).Value = "" c.Offset(, 1).Value = "" Else c.Offset(, -1).Resize(, 3).Value = rngList.Rows(m).Value End If End If Next End If Application.EnableEvents = True End Sub
(hatena) 2022/06/29(水) 00:49
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.