エクセルリストの関連付け方法とは?

このQ&Aのポイント
  • エクセルのリストの関連付けについて、手作業ではなく関数を使って対応する方法があります。
  • ファイルAのD列にはID+文字列のリストがあります。
  • ファイルBのB列にはファイルAのD列のID部分だけがあり、C列にはコメントがあります。
回答を見る
  • ベストアンサー

エクセルのリストの関連付け

エクセルで下記作業を行っているのですが、手作業でやっています。 関数で対応可能でしょうか? (1)ファイルA D列にID+文字列のリストがある。(たまに複数あり) ----------------------------------------------------- あああああAAA-12345 | いいいいいAAA-12365 | ----------------------------------------------------- いいいいいAAA-12365 | ----------------------------------------------------- ううううううAAA-12322 | ----------------------------------------------------- あああああAAA-12345 | ----------------------------------------------------- (2)ファイルB B列に、ファイルA D列のID部分だけがある。 C列に、コメントがある。 ----------------------------------------------------- 12345 |ねこ ----------------------------------------------------- 12365 |いぬ ----------------------------------------------------- 12322 |かば ----------------------------------------------------- (3)ファイルAのE列に、ファイルBのコメントを転記したい。 ----------------------------------------------------- あああああAAA-12345 |ねこ いいいいいAAA-12365 |いぬ ----------------------------------------------------- いいいいいAAA-12365 |いぬ ----------------------------------------------------- ううううううAAA-12322 |かば ----------------------------------------------------- あああああAAA-12345 |ねこ -----------------------------------------------------

質問者が選んだベストアンサー

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

>質問例の一番上のケースは、1つのセルに複数の行が入っているのですが、 1つのセルに複数の同種情報を入れることはデータベースとしての運用上好ましくありませんのでデータ入力方法を改善すべきです。 IDがセル内の何処に有るかを定義できる状態を探さなければなりません。 質問の例ではファイルAのD列でIDの先頭に"-"が有るので、その位置の次から5桁がIDとすれば関数式で対応できます。 D列の改行が1ヶ所(2行)であればそのままの状態でも以下の関数式で良いと思います。 3行以上になるときはあなたの応用力で対応してください。 =IF(IFERROR(FIND(CHAR(10),D2),0),VLOOKUP(VALUE(MID(D2,FIND("-",D2)+1,5)),[Book2]Sheet1!$B$1:$C$4,2,FALSE)&CHAR(10)&IF(IFERROR(FIND(CHAR(10),D2),0),VLOOKUP(VALUE(MID(D2,FIND("-",D2,FIND(CHAR(10),D2))+1,5)),[Book2]Sheet1!$B$1:$C$4,2,FALSE),"")) 改行マークはCHAR(10)でありセル内データの1行目と2行目の境に必要です。 結果の表示が2行にならないときはセルの書式設定で「文字の制御」の「折り返して全体を表示する」にチェックを入れます。

harumi9999
質問者

お礼

どうもありがとうございます。ログインできなくなってしまい、お礼が遅くなり申し訳ありませんでした。 できました!

その他の回答 (1)

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

>関数で対応可能でしょうか? 可能です。 AファイルはBook1とします。 BファイルはBook2とします。 Book2のB列に入っているIDの値は文字列ではなく数値としたとき次の式をAファイル(Book1)のE2に入力し、下へオートフィルでコピーします。(IDは右側から5桁固定とした) =VLOOKUP(VALUE(RIGHT(D2,5)),[Book2]Sheet1!$B$1:$C$4,2,FALSE) 貼付図の上がBook1で下がBook2のSheet1です。

harumi9999
質問者

お礼

どうもありがとうございます。 質問例の一番上のケースは、1つのセルに複数の行が入っているのですが、この場合はセルをわけないといけないでしょうか? その作業は手動になりますか?

関連するQ&A

  • エクセルでこのリストの加工をしたいのですが

    A列(ID)  B列(エラーコード)  C列(日付)に A000  01;02  4/1 A019  03  4/10 A008  02;05;07  3/29 ・ ・ ・ のように入っているデータがあり、 B列には「;」セミコロンで区切られたデータが1~25個入っています。 この全リストを下記のように加工したいのですが可能でしょうか? A列  B列  C列に A000  01  4/1 A000  02  4/1 A019  03  4/10 A008  02  3/29 A008  05  3/29 A008  07  3/29 ・ ・ ・ B列のエラーコード毎(「;」毎)のレコードに加工したいのです。 (エラー数、エラー種別数ランキング等集計のため) 標準関数と多少の手作業でもマクロでもVBAでも構わないのですが、 元リストが8000レコードあるので効率よく加工する方法があれば教えてください。

  • エクセルで出来るんでしょうか?

    下図の様のA列のデーターをB列に転記する際 C列で重複がないかをチェック、D列でB列に転記してない残りのNoを表示させる。 この様な作業を関数を使用できるものなのでしょうか?アドバイスお願いします。 できるんか、ぼけーレベルでしたらすみません;; 補足 ・B列には入力する順序規則はなし。 ・D列に表示する転記してないデーターの表示位置はD列ならどこに表示させてもかまいません。

  • Excel リストについて

    Excel のリストについて教えてください。 すみません、すぐ実現できそうな気もするのですが… 【質問】 以下の様なシートがあります。「猫」、「犬」、「猿」、「ゴリラ」 と4種類いますが、その4種類出すのにはどうしたらよいのでしょうか。 リストの集計機能を使うと、「猫」は3、「犬」が2とかしかできないので、リストに入った候補数(?)を知りたいのです。   | A B C … ------------------------- 1 | 猫 2 | 猫 3 | 犬 4 | 猫 5 | 猿 6 | 犬 7 | ゴリラ 8 | ゴリラ …    …

  • Excel ユニーク数1のものだけを数えたい

    Excelに関しての質問です。 例えばA列に「犬」「ねこ」「うさぎ」という文字列がそれぞれ複数散らばっているとして、B列には「犬A」、「犬B」、「犬C」… 、「ねこA」、「ねこB」…というように文字列がそれぞれ複数入っているとします。(アルファベットはA以降、どこまで入っているかわからないとします)(A列とB列の動物の種類はそれぞれ一致するものとします。) C列で、B列のユニーク数をカウントものを出します。 →ここからが本題なのですが、A列の動物に対して、B列の「ABC...」の数はいくつかを出したい(=D列)のですが、関数はどのようになりますか? ユニーク数が「1」であるものの数を数えればいいと思うのですが、式を教えていただきたいです。

  • エクセルでこんなことできますか?

    あいまいな質問タイトルでごめんなさい。 つまりこういうことなんです。データが次のように入っています。 <問い>   A列(名前)   B列(種類)           ポチ       犬             タマ       猫        シロ       猫        ジョン      犬        …        …   となっていて、 (1)種類が犬ならばC列にその犬の名前を表示し、猫ならばD 列にその猫の名前を表示する。    つまり、こんな感じ…。    C列(犬)     D列(猫)     ポチ                   タマ                   シロ           ジョン          ……      …… このように種類によって名前分けってできますか? (2)もしくは、種類が犬の場合には、その該当するA列の名 前のセル(または文字)を赤色などで見やすくする。  つまり、<問い>ではA列のポチ、ジョンのセル(または文字)が赤く表示されるようにしたいわけです。 私はエクセル初心者なので、何となくIF関数かな?と思い、調べては見るものの うまくいきません。 どちらかだけでもいいので、どなたか教えてください。お願いします。    

  • エクセル 特定値の数え方に関する関数について

    エクセル2010を使用しています。 3つの列でそれぞれの値が入力されているときに 「A列に○○と入力してあり、B列に△△と入力されているセル」の個数や、 「A列には○○、B列には△△と入力してあり、C列には××と入力されているセル」の個数を数えるにはどのように関数を作ればいいのでしょう? データが増えていくので、いちいちフィルタを使って数えるのが手間なので、関数を作りたいと思っています。 わかりずらくて申し訳ありません。一応下の例でいくと A列が「1」となっていてB列が「い」となっているセルの個数 や、 A列が「3」でB列が「あ」となっているC列「犬」の数などです。 A列 B列 C列 1  あ  犬 1  い  猫   1  あ  猫 2  う  犬 2  あ  鳥 3  う  犬 3  い  猫 3  う  鳥 よろしくお願いします。

  • 3つ以上のリストの入力規則を連動させたい

    エクセルの質問です。 例えば、 A列で「動物」を選択した場合 B列は(犬、猫)、C列は(ドッグフード、キャットフード)のリストが表示され、 A列で「昆虫」を選択した場合は B列は(カブトムシ、クワガタ)、C列は(スイカ、ゼリー)のリストが表示されるようにしたいのですが 可能でしょうか? 1つの列は名前を定義し、INDIRECT関数を使えばできるというのはわかるのですが、2つの列を連動させることができず 困っています。 回答よろしくお願いします。

  • エクセルのマクロ

    あるエクセルのファイルにLIST(A列に呼びだすエクセルファイル名、B列からD列に呼びだしたエクセルに貼り付ける文字列があり、それが100行程度ある)があり、そのLIST A列に書かれているエクセルファイルを開き、その開いたエクセルファイルのある特定のセルにB列からD列にあるセルをそれぞれに貼りつける作業を繰り返すようなマクロはできないでしょうか? [流れ] LISTに書いてあるエクセルファイルを呼び出す→文字列を貼りつける→保存(できれば名前を変えて保存(その場合は、LISTのE列に名称を記載)→閉じる→次のLISTのエクセルファイルを開く→それをLISTの最後の行まで終わるまで繰り返す。 よろしくお願いします。

  • エクセルのVLOOK関数について

    VLOOK関数で、 B1に123456と入力した際、5桁目の5を抽出(MID)し、 A3~D3に次の結果が表示されるようにしたいです。 VLOOK、VALUE、IF、MID等が必要だとは思うのですが、組み立てがわかりません。 A B    C  D 1 123456 2 鳥  猫     犬    猿  3 51 52 53 54 4 ※B1に123446と入力した場合は以下です A B    C  D 1 123446 2 鳥  猫     犬    猿  3 41 42 43 44 4 ・データリスト    鳥  猫  犬   猿  1 11 12 13 14 2 21 22 23 24 3 31 33 33 34 4 41 42 43 44 5 51 52 53 54 6 61 62 63 64 よろしくお願いします<(_ _)>

  • エクセルのシートの比較

    ご教示ください。 以下のAとBのシート(別ファイルでも可)の各行を比較して、AとBのシートのD列に結果を表示させるにはどのような関数を使えばよいでしょうか? (”|”はセルの区切りです。D列の表示はシートの何行目かが分かれば良く、例示のものでなくとも構いません) シートA |犬|いぬ|dog| |猫|ねこ|cat| |鳥|とり|bird| シートB |猿|さる|monkey| |鳥|とり|bird| |猫|ねこ|kat| ↓比較後 シートA |犬|いぬ|dog|シートBなし| |猫|ねこ|cat|シートBなし| |鳥|とり|bird|シートBライン2| シートB |猿|さる|monkey|シートAなし| |鳥|とり|bird|シートAライン3| |猫|ねこ|kat|シートAなし| 以上よろしくお願いいたします。