• 締切済み

エクセルについて教えてください。

エクセルについて教えてください。 コードの振られたデータシートが新旧2つあります。旧データに含まれる項目を新データに追加項目として反映させたいのですが、関数は何を使って、どう範囲などを入れたらよいのでしょう。追加・削除されたコードもあります。 このような感じのデータです⇒新データはA列:コード、B列:氏名となっており、旧データには、AB列にC列:グループ名が入っています。 新データにC列の内容を反映させ、最終的にはグループごとにソートをかけたいのです。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

>追加・削除されたコードもあります。  ⇒追加コードは旧シートにない為、反映できないがどのようなコードにするのでしょうか。   NO1様の回答補足で2行目以降が「#N/A」とはこの状態と思います。   仮に追加コードは空白でよいのならば、次のような数式でエラーは回避できます。   =IF(COUNTIF(旧シート!A:A,A2),VLOOKUP(A2,旧シート!A:C,3,FALSE),"")   旧シートには見出し行ありとしていますので2行目開始としています。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 外していたらごめんなさい。 一つの案です。 ↓の画像で左側(Sheet1)が旧データ・右側(Sheet2)が新データとします。 Sheet2の空いている場所にSheet1・Sheet2のデータを重複なしに表示させてみてはどうでしょうか? Sheet1の作業列D2セルに =IF(OR(A2="",COUNTIF(Sheet2!$A$2:$A$1000,A2)),"",ROW(A1)) という数式を入れ、フィルハンドルの(+)マークでダブルクリック、又はオートフィルで下へコピーします。 そして、Sheet2のE2セルに =IF(COUNT($A$2:$A$1000)>=ROW(A1),A2,IF(COUNT(Sheet1!$D$2:$D$1000,$A$2:$A$1000)>=ROW(A1),INDEX(Sheet1!A$2:A$1000,SMALL(Sheet1!$D$2:$D$1000,ROW(A1)-COUNT($A$2:$A$1000))),"")) という数式を入れ、オートフィルで列方向と行方向にコピーすると 画像のような感じになります。 尚、数式はそれぞれのSheetの1000行目まで対応できるようにしています。 E列~G列はあくまで数式が入っているだけですので、 このままでは並び替えは出来ません。 E~G列全てを範囲指定 → コピー → 好みの列を選択 → 形式を選択して貼り付け → 「値」にチェックを入れOK これでグループでのソートが可能だと思います。 以上、長々と書きましたが 参考になれば幸いです。m(__)m

回答No.2

推測での回答ですので、応用してください。 エラー処理を施しました B2セルに =IF(ISNA(MATCH(A2,D:D,0)),"",INDEX(E:E,MATCH(A2,D:D,0))) 下へオートフィル 添付図参照

  • qyukip
  • ベストアンサー率40% (13/32)
回答No.1

VLOOKUPを使ってみてはいかがでしょうか。 例えば新データのC列にVLOOKUP(A1,"旧シート名"!A:C,3,FALSE) のような記述をすればできると思います。

8-16
質問者

補足

早々の回答ありがとうございます。 入れてみました。できました。ところが、2行目以降に数式をコピーすると「#N/A」となってしまうのです。 2行目以降はA1部分がA2、A3となっているのですが・・・これでは違うのでしょうか。

関連するQ&A