プロが教える店舗&オフィスのセキュリティ対策術

まずは画像のExcelの表を見てください。

表1 B2:D8に各商品名、納入個数、納期が表示されています。
表2 F2:H8には各商品の追加納入個数と最終納期が表示されています。
このとき表1の"商品名":B列の名前が表2の"商品名":F列に記載されてあれば
対応した"商品名"の "納入個数"+"追加納入個数" をC列:"納入個数"に更新
D列:納期もH列:"最終納期"に更新します。

例 商品名:AAA(B3) 納入個数:5(C3) 納期:2021/5/8(D3)の場合
商品名:AAA(F7)があるので 納入個数(5)+追加納入個数(3) = 8 を セルC3に入力します。
また最終納期:2021/5/18(H7)があるので納期セルD3を2021/5/18に更新します。

ただし表1にある商品名の中で表2に商品名がない場合は納入個数、納期は更新したくないです。
またC3:D8以外のセルは基本的にロックされており、編集できない状態になっております。

ここで二つ程悩んでいることがあります。

・1:納入個数の関数の設定
例えばセルC3に =IFNA(VLOOKUP(B3,$F$3:$H$8,2,FALSE), 5) + 5 と入力すれば解決しますが
この数式を下の列にコピーしていくと "+5" という数字までコピーされていくのでセルC4:C8までの本来の納入個数が "+5" に上書きされてしまいます。
=IFNA(VLOOKUP(B3,$F$3:$H$8,2,FALSE), C3) + C3 という数式を使いたいですが、循環参照でエラーになってしまいます。

・2:納期の更新関数の設定
例えばセルD3に =VLOOKUP(B3,$F$3:$H$8,3,FALSE) と入力すれば商品AAAの納期の更新は解決できますがこの数式を下の列にコピーしていくと当然表2にない商品名は #N/A と表示されます。
IFNAなどを組み合わせて =IFNA(VLOOKUP(B3,$F$3:$H$8,3,FALSE),D3) という数式を使いコピーしていき表2にない商品名は納期を更新せずにそのまま表示したいですがやはり循環参照でエラーになってしまいます。

2つの問題の共通点としてはC3:D8以外のセルは基本的にロックされているので元の納入個数や納期(C列,D列)を他に一時的に保存できないところにあります。

なにかよい関数や解決策はありませんか?

「ExcelのVLOOKUPについての質問」の質問画像

A 回答 (1件)

こんばんは



関数では入力セルの値を変更することはできません。
どうしてもご説明のように処理したければ、マクロを使うしかないと思われます。
表2を入力し直したらどうなるかなど、検討すべき点はいろいろ出てくると思いますけれど。

代替案としては、別に「集計表」を作成しておいて、表1、表2をご説明のように集計することでしょうか。
こちらであれば、関数でも問題なく集計可能です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!