• 締切済み

エクセル2010 結び付け?関連づけ?

どう説明してよいのか分からないので 小さいですが画像を添付しました。 1000品目ほどある商品の在庫場所の管理で使う表です。 1年に1回、棚卸の関係で使用します。 画像で理解できない部分があれば回答いたしますので どうぞよろしくお願いいたします。 ■SheetA~Cは、別のSheetです ■エクセル2010使用です Sheet A ・フィルターで在庫場所ごとに並べています Sheet B ・品番順にしか出力できない ・品目が増えることがある(例ではスイカ) ・品目が減ることはない ・価格が変わることがある(例ではバナナ) ・在庫場所の欄はない Sheet C ・新商品である、スイカの在庫場所は空欄 ・それ以外の商品の在庫場所は  シートAと同じ場所を示す

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

シートBをコピーして丸ごとシートCに貼り付ける シートCのD2セルに =IFERROR(VLOOKUP(A2,SheetA!A:D,4,FALSE),"") と記入、以下コピーしておく 必要に応じてシートCを在庫場所等で並べ替える。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

提示されている画像からの判断ではSheetBをSheetCへコピーしてSheetAの「在庫」列を付加したものになっているようです。 当方の貼付画像はExcel 2013で検証した結果ですがExcel 2010でも再現できます。 SheetCのD2セルへ次の数式を入力して下へ必要数コピーすれば完成です。 =IF(AND(COUNTIF(SheetA!A:A,A2),A2<>""),VLOOKUP(A2,SheetA!A:D,4,FALSE),"")

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 最終行が何行目になるのか決まっていない場合でも有効な方法です。  今仮に、Sheet A、Sheet B、Sheet Cのいずれのシートにおいても、「No」という項目名が入力されているセルは同じA1セルであるものとします。  まず、Sheet CのA1セルに次の関数を入力して下さい。 =IF(INDEX('Sheet B'!$A:$C,ROW(),COLUMN())="","",INDEX('Sheet B'!$A:$C,ROW(),COLUMN())) 或いは =IF(INDIRECT("'Sheet B'!RC",FALSE)="","",INDIRECT("'Sheet B'!RC",FALSE))  次に、Sheet CのD1セルに次の関数を入力して下さい。 =IF($A1="","",IF(ISERROR(1/(VLOOKUP($A1,'Sheet A'!$A:$D,4,FALSE)<>"")),"",VLOOKUP($A1,'Sheet A'!$A:$D,4,FALSE)))  次に、Sheet CのA1セルをコピーして、Sheet CのB1~C1のセル範囲に貼り付けて下さい。  次に、Sheet CのA1~D1のセル範囲をコピーして、Sheet CのA列~D列の2行目以下(Sheet Bのリストの行数を十分上回る事が出来る所まで)に貼り付けて下さい。  以上です。

回答No.1

SheetAに同じ品目は記述されないという前提であれば、在庫の表記にはVlookup関数を使用すれば良いかと思います。 まず、各シートに以下のように項目が配置されていると仮定します。 A列・・・No. B列・・・品目 C列・・・価格 D列・・・在庫 ※SheetBは無し No.、品目、価格はSheetBの値をそのまま持って来ればよさそうなので、 SheetCのA2セルに「=SheetB!A2」、B2セルに「=SheetB!B2」、 C2セルに「=SheetB!C2」で問題ないかと思います。 在庫はSheetAから持ってくる必要がある&品目が存在しない場合は空白にするので、 D2セルに以下の記述をします。 「=IF(ISERROR(VLOOKUP(B2,SheetA!$A$2:$D$○○,3,FALSE)),"",(VLOOKUP(B2,SheetA!$A$2:$D$○○,3,FALSE)))」 ※○○にはデータの最終行を入力 これで在庫場所を表記できると思います。

関連するQ&A