[[20221121104834]] 『該当する商品の情報入力を別シートにも連動して反』(やま) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『該当する商品の情報入力を別シートにも連動して反映させる方法』(やま)

sheet1の内容をsheet2に自動反映させたいです。 例えばsheet1のB列に入力された際にsheet2のB列にも反映させたいです。 この時sheet1のA列の文字とsheet2のA列の文字が一致しているものだけ、sheet2のB列に変更を反映させることが条件になります。

 <Sheet1>
    |[A]|[B]   
 [1]|  りんご|○
 [2]|  みかん|×
 [3]|  バナナ|×
 [4]|  桃|○
 [5]|  キウイ| ×   

<Sheet2>

    |[A]|[B]  
 [1]|  りんご|○
 [2]|  みかん|×
 [3]|  バナナ|×
 [4]|  桃 |○
 [5]|  キウイ|×

< 使用 Excel:unknown、使用 OS:unknown >


 Sheet2のB列にVLOOKUP関数を使ってはどうだろうか?
 あとEXCELのバージョンは記述する様に。
 質問内容によってはバージョンで回答が異なることもあるので。
(ねむねむ) 2022/11/21(月) 12:48:18

ねむねむさん
ご連絡ありがとうございます。
Excelバージョン:2108#14326.21200
Os:Windows10 Enterprise バージョン21H2

VLOOKUP関数を使って数式を入力してみましたが、
うまくできませんでした。
=VLOOKUP(A1:A5,A1:B5,2,FALSE)

今回の問い合わせについてできる限りわかりやすくお伝えします。

sheet1のデータを○と変更したらsheet2のデータが○と自動で
反映できるようにしたいです。

実際に作成しているsheet1は、sheet2のデータを更に条件を絞り作成
したものになります。
なのでsheet1.2=10(sheet1)/100(sheet2)くらいの比率になります。
sheet1のデータは毎月変わります。
sheet2のデータも毎月変わります。
反映させる条件をりんごのみに固定するのではなく、sheet1のA列商品
のB列が変更された時に、sheet2でsheet1のA列の商品と同じものが
sheet2でB列が自動で変更できるようにしたいと思ってます。
よろしくお願いします。

 <Sheet1>
    |[A]|[B]   
 [1]|  りんご|○ ←入力
 [2]|  みかん|× ←入力
 [3]|  バナナ|× ←入力
 [4]|  桃|○ ←入力
 [5]|  キウイ| ×  ←入力

<Sheet2>

    |[A]|[B]  
 [1]|  ピーマン|○
 [2]|  ラムネ|×
 [3]|  りんご|○ ←自動反映
 [4]|  トマト|○
 [5]|  キウイ|× ←自動反映
(やま) 2022/11/21(月) 14:10:32

 別シートのデータを参照する際には
 シート名!セル参照
 の形になる。

 なのでSheet1のA1セルからB5セルを参照する場合は
 Sheet1!A1:B5
 になるので
 Sheet2のB1セルに
 =VLOOKUP(A1:A5,Sheet1!A1:B5,2,FALSE)
 でいいと思う。
 ただ現在365(このバージョンだと思う)で確認できないため、またバージョンが365でない場合、エラーになる場合は
 Sheet2のB1セルに
 =VLOOKUP(A1,Sheet1!A$1:B$5,2,FALSE)
 と入力して下へフィルコピーしてみてくれ。
(ねむねむ) 2022/11/21(月) 14:18:54

ご回答ありがとうございます。
バージョンは365でした。

=VLOOKUP(A1:A5,Sheet1!A1:B5,2,FALSE)で
試しましたが、範囲の部分でSheet1!を入力するとエラーに
なってしまいます。試しにSheet2!を入力するとエラーには
なりませんでした。

入力方法に問題があるかもしれないので、間違ってないか
下記ご確認お願いします。
• 数式はsheet2のB列に入力
• sheet1のシート名は変更していて、左下のタブのここで言う
 sheet1のシート名を入力
• =VLOOKUP(sheet2のA列(商品名)の範囲
 ,左したタブのシート名(sheet1)

    sheet1の範囲
 ,sheet2の自動反映したい列の番号入力
 ,FALSE)

質問してて気になりましたが、列番号はどっちのsheetの範囲を基準に
考えれば良いですか?
sheet1参照で範囲決めてますが、実際に反映させたいのはsheet2に
なるので、わからなくなりました。
よろしくお願いします。

(やま) 2022/11/21(月) 14:50:06


 なんというエラーになったのだろうか?
 もしかしたら
 'Sheet1'!A$1:B$5
 とシート名を'で囲むとエラーにならずにすむだろうか。

 列番号については例えば
 =VLOOKUP(A1:A5,Sheet1!A1:B5,2,FALSE)
 の式では検索に指定した範囲(Sheet1!A1:B5)で2列目を求めることになる。
(ねむねむ) 2022/11/21(月) 15:00:36

 もう少し丁寧に説明すると指定した範囲(Sheet1!A1:B5)内の左端(Sheet1のA1:A5)内で
 式を入力したシートのA1:A5の値を検索し見つかった行の指定した列番号(2)の値を求める。

 Sheet1のA4セルに検索値が見つかった場合、対応する2番目の列(B列)の4行目B4セルの値が求められる。
(ねむねむ) 2022/11/21(月) 15:10:42

ご連絡ありがとうございます。
エラーは#SPILL!と表示されます。

'Sheet1'!A$1:B$5とシート名を囲ってもエラーが発生します。

列番号ですが、sheet1の変更はB列ですが、sheet2に反映したい
列がC列となります。説明しておらずすみません。

この場合だと、この数式で変更する事は出来ませんか?
(やま) 2022/11/21(月) 15:42:11


 そのエラーであればB1セルに式を入れた場合、B2セルより下のB列はクリアしてくれ。

 スピル機能といって365以降で追加された一つのセルに式を入れてそのセルより下あるいは右のセルにも結果を返す機能で、
 すでに別の値が入っている場合のエラーなので。
(ねむねむ) 2022/11/21(月) 15:57:36

 あとSheet1のA列で検索して対応するSheet1のB列の値を持ってきたいのであれば2(A列からB列の2番目)で構わない。
(ねむねむ) 2022/11/21(月) 15:59:49

ご連絡ありがとうございます。

B列データを削除して数式入力しましたが、ダメでした。
今度のエラーは#N/Aです。

B列のデータを自動反映させるために、sheet2も反映させたい
行をB列に合わせました。
それでも上手くいきませんでした。
(やま) 2022/11/21(月) 17:10:47


 まず両方のシートのレイアウト(それぞれどの列になんのデータがあるか)を説明してくれないだろうか?
(ねむねむ) 2022/11/21(月) 17:13:09

ご連絡ありがとうございます。

現在のシート状況です。
両シートともB列オープンの部分には選択タブがあります。
選択タブは[オープン、クローズ]
後はsheet1のA列の番号が、sheet2にある場合sheet2上で
セル自体に色が付くように設定してます。

毎月行う作業はこのsheet1とsheet2のA列に番号と
元々オープンとB列に入力されている情報を貼り付けます。

管理する上でsheet1からまずクローズと入力していきます。
ただ、sheet2にもsheet1と重複しているデータが潜んでいるので
毎回sheet1をクローズと入力してsheet2にもクローズと入力するのは
手間なので、sheet1をクローズしたタイミングでsheet2の同じ
データにも反映できればと思いご相談しています。
よろしくお願いします。

<Sheet1>

    |[A ]     |    [B]   
 [1]|  1230|オープン
 [2]|  1231|オープン
 [3]|  1232|オープン
 [4]|  1233|オープン
 [5]|  1234|オープン

<Sheet2>

    |[A]|[B]  
 [1]|  2134|オープン
 [2]|  2135|オープン
 [3]|  2135|オープン
 [4]|  1230|オープン
 [5]|  1234|オープン
(やま) 2022/11/21(月) 17:36:57

 Sheet1、Sheet2のA列、B列には、どこからかのデータを貼り付けられている。
 sheet1のB列の値を変更したときに、A列と同じ値が、Sheet2のA列にあったら、B列の値をSheet1の値で書き換えたい。
 ということでしょうか。

 だとしたら、式では無理ですね。マクロが必須になります。

(hatena) 2022/11/21(月) 21:27:24


 少将かぶったが
 両シートとも最初はA列にコード、B列にオープンと入力されていてSheet1のB列にクローズと入力されたら
 Sheet2の同じコードのB列もクローズにしたい、ということであればマクロ(VBA)で、ということになるか、
 関数でということであれば例えばSheet2のB列にオープンと入力されている状態でC1セルに
 =IFERROR(VLOOKUP(A1:A5,Sheet1!A:B,2,FALSE),B1)
 では」どうだろうか?
(ねむねむ) 2022/11/21(月) 21:28:31

 VBAなら下記のような感じになります。

 Sheet1モジュール------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim trng As Range, c As Range, r As Long
    Set trng = Intersect(Target, Range("B:B"))
    If Not trng Is Nothing Then
        With Worksheets("Sheet2")
            On Error Resume Next
            For Each c In trng
                r = WorksheetFunction.Match(c.Offset(, -1).Value, .Range("A:A"), 0)
                If Err.Number = 0 Then .Cells(r, 2).Value = c.Value
                Err.Clear
            Next
            On Error GoTo 0
        End With
    End If
End Sub

(hatena) 2022/11/21(月) 22:01:06


hatenaさん

ご連絡ありがとうございます。
依頼内容はhatenaの理解で合っています。

数式でなんとかなればと思い試していましたが、
マクロ必須とのこと承知しました。

コードのご提示もありがとうございます。
初めてのマクロですが、明日試してみます。
(やま) 2022/11/22(火) 00:08:36


ねむねむさん

ご連絡ありがとうございます。

できれば数式の方がいいので、明日試してみます。
(やま) 2022/11/22(火) 00:11:01


hatenaさん

コード入力したら無事できました。
ありがとうございます。

できればA列→B列、B列→C列のパターンで
コードを作成することは可能でしょうか。
下記のように自分なりに変えてみましたが、ダメでした。
よろしくお願いします。

 Sheet1モジュール------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim trng As Range, c As Range, r As Long
    Set trng = Intersect(Target, Range("C:C"))
    If Not trng Is Nothing Then
        With Worksheets("Sheet2")
            On Error Resume Next
            For Each c In trng
                r = WorksheetFunction.Match(c.Offset(, -1).Value, .Range("B:B"), 0)
                If Err.Number = 0 Then .Cells(r, 2).Value = c.Value
                Err.Clear
            Next
            On Error GoTo 0
        End With
    End If
End Sub

(やま) 2022/11/22(火) 09:32:46


ねむねむさん

数式入れてみましたがダメでした。
不正な数式と表示されました。

(やま) 2022/11/22(火) 09:33:55


オープン,クローズの入力規則リスト使用、
操作はオープン→クローズのみ 想定
Sheet2 B1に
=XLOOKUP(A1,Sheet1!A:A,Sheet1!B:B,"オープン",0)
(きら) 2022/11/22(火) 15:55:35

きらさん

ご連絡ありがとうございます。
こちらの数式で問題なくオープンからクローズに
自動反映できました。ありがとうございました。

(やま) 2022/11/22(火) 17:23:30


hatenaさん

お世話になってます。
以前作成してもらいました、VGAコードですが、
A列→B列、B列→C列のパターンで再作成して
もらうことは可能でしょうか。

お手数お掛けしますが、よろしくお願い致します。
(やま) 2022/11/24(木) 15:15:21


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.