プロが教えるわが家の防犯対策術!

【希望】
 表Aを入力すると表Cに自動反映されるよう、表CのA~B列に関数を入れたい。

【例】『部署コード:99999』の場合(オレンジで色付けしています)
 ・表Aに2列あり、商品はA、B、Eの3種類
 ・表Bにて『商品名』を『商品コード』に読み替える(『A→11』『B→22』『E→55』)
 ・表Cに『部署コード:99999』が商品コードに読替えられた状態で3行表示される
 (表Aに商品Aが2行あっても、表Cでは重複されない)

【条件】
 ①いずれの表も社内システムや別ファイルにそのまま読み込むためフォーマット変更は不可
  (置換や重複削除なども不可)
 ②表Cには同じペアが重複されないようにする(入荷個数は関係ないため)
 ③マクロ、ピボットテーブルの使用は能力的な問題で避けたい

別シートに別途読替え表などを作成するのは可能です。
また、表Cは部署コードごとにまとまっていると嬉しいのですが、順不同でも構いません。

期間ごとに区切って作業していますが、
100行近くを手作業では時間がかかる上にミスも出やすいため自動化運用したいです。

だいぶ制限がありますが、可能でしょうか。
もしよろしければお知恵をお借りできれば幸いです。
よろしくお願いします。

「【Excel2010】表の一部を読替えて」の質問画像

A 回答 (1件)

こんばんは!



VBAなら簡単にできそうですが、VBA以外の方法をご希望だというコトなので、
一例です。
大前提として、部署コード・商品コードとも数値で、
部署コードは降順に並んでいるものとします。

↓の画像のように「表A」に作業用の列(表)を設けています。
作業列(表)にはA~Eまでの「商品名」の項目を入れておきます。
そしてL3セルに
=IF(F3="","",IF(COUNTIFS($D$3:$D3,$D3,F$3:F3,">0")=1,ROW()*10^4+VLOOKUP(L$2,表B!$A$2:$B$6,2,0),""))

という数式を入れフィルハンドルで列・行方向にコピーしておきます。

「表C」のA2セルに
=IFERROR(INDEX(表A!D:D,INT(SMALL(表A!L:P,ROW(A1))/10^4)),"")

B2セルに
=IFERROR(MOD(SMALL(表A!L:P,ROW(A1)),100),"")

という数式を入れ、A2・B2セルを範囲指定 → B2セルのフィルハンドルで下へコピー!
これで画像のような感じになります。

※ 作業列が目障りであれば、遠く離れた列にするか
非表示にしてください。

※ 商品名・商品コードとも出現順になりますので、昇順に並んでいません。
作業用の列を工夫すれば可能かもしれませんが、
とりあえずはこの程度で・・・m(_ _)m
「【Excel2010】表の一部を読替えて」の回答画像1
    • good
    • 0
この回答へのお礼

ありがとうございます!できました!!
前回も助けていただき本当にたすかりました。
どうもありがとうございました。

お礼日時:2019/06/19 21:07

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