• ベストアンサー

エクセルの2つの表を一つにまとめるには

エクセルで作成した、内容の異なる表を1つの表にまとめることは可能でしょうか。 たとえば、それぞれ作成した表の列に「電話番号」の欄を設けて、 その「電話番号」が同じな順番に並びかえて2つの表を1つの表にまとめる場合です。

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

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

No.3・4・5です! ほんとうに何度もごめんなさい。 たぶん今回で最後になると思います。 前回のように難しく考える必要はありませんでした。 Sheet1のデータがSheet2になくても普通に性別と趣味の欄だけが空白になる方法で、 Sheet1の作業列は不要ですので削除してください。 (Sheet2の作業列は前回の数式そのままが必要です) 前回の画像の表そのままで Sheet3のA2セルを =IF(COUNTA(Sheet1!$A$2:$A$1000)>=ROW(A1),Sheet1!A2,"") としてB2セルまでオートフィルでコピー C2セルを =IF(COUNTA(Sheet1!$C$2:$C$1000)>=ROW(A1),Sheet1!C2,IF(COUNTA(Sheet1!$C$2:$C$1000)+COUNT(Sheet2!$D$2:$D$1000)>=ROW(A1),INDEX(Sheet2!$C$2:$C$1000,SMALL(Sheet2!$D$2:$D$1000,ROW(A1)-COUNTA(Sheet1!$C$2:$C$1000))),"")) という数式に変更してください。 D2・E2は前回のままでOKかと思います。 これでA2~E2セルを範囲指定し、E2セルのフィルハンドルで下へコピーすれば大丈夫だと思います。 尚、数式はSheet1・2とも1000行まで対応できるようにしていますので 後からデータが増えてもSheet3に反映されるはずです。 親の仇のように、「これでもかっ!」というくらい顔を出してしまいました。 ほんとうにごめんなさいね。m(__)m

その他の回答 (6)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.7

解答No2です。 お示しの図を参考にして解答2の式を変形すれば次のようになるでしょう。 ただし、お示しのシート3のまとめの表はあまりのも不自然です。通常はA列が2つのシートの共通の項目にして、すなわち電話番号にして右の列には氏名、住所、性別、趣味などとすることです。後々の操作を考えるならばA列はデータの最後の行まで詰まっていることが理想です。 ところで、シート1およびシート2での電話番号は同じシート内では重複する電話番号は無いとします。 そこで例えばシート1では1行目に項目名がありC列には電話番号の項目名がありC列までの表とします。シート2ではC1セルに電話番号と入力されC列までの表であるとします。 まとめの表をシート3に作るとします。 初めにシート1のC列をコピーしてシート3のA1セルに貼り付けます。その後にシート2のC2セルから下方をコピーしてシート3のA列のデータの後に貼り付けます。 その後にA列を選択してからエクセル2007でしたら「データ」タブで「重複の削除」を選択して重複の電話番号がない状態にします。 エクセル2003でしたらA列を選択してから「データ」メニューから「フィルタ」さらに「フィルタオプションの設定」と進んで、表示される画面で「重複するレコードは無視する」にチェックをしてOKします。この操作によって重複のない形での電話番号がA列に並ぶことになります。 その後にB1セルから右の列にはシート1での項目名、ついで、シート2での項目名を必要なものだけ貼り付けます。例えばB1セルには氏名、C1セルには住所、D1セルには性別、E1セルには趣味と入力します。 最後にB2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(OR(COUNTIF(Sheet1!$C:$C,$A2)=0,COUNTIF(Sheet1!$1:$1,B$1)=0),"",INDEX(Sheet1!$A:$C,MATCH($A2,Sheet1!$C:$C,0),MATCH(B$1,Sheet1!$1:$1,0)))&IF(OR(COUNTIF(Sheet2!$C:$C,$A2)=0,COUNTIF(Sheet2!$1:$1,B$1)=0),"",INDEX(Sheet2!$A:$C,MATCH($A2,Sheet2!$C:$C,0),MATCH(B$1,Sheet2!$1:$1,0))) この式で OR(COUNTIF(Sheet1!$C:$C,$A2)=0,COUNTIF(Sheet1!$1:$1,B$1)=0),"",の意味はシート1のC列でA2セルにある電話番号が無い場合、および、シート1でB1セルにある項目名が無い場合には、すなわち氏名の文字が無い場合にはセルの値は空にしなさいを意味します。 INDEX(Sheet1!$A:$C,MATCH($A2,Sheet1!$C:$C,0),MATCH(B$1,Sheet1!$1:$1,0))の意味はシート1のA列からC列の範囲で、C列でA2セルにある電話番号に一致する行、B1セルの値に一致する項目のある列の値を求めることです。 同様のことをシート2でも行います。氏名などの場合にはシート1のデータが表示されるように、また性別などの場合にはシート2のデータが表示されるように二つの式を&で結びつけています。 なお、VLOOKUP関数を使って対応しようとしていますがその関数ではできません。VLOOKUP関数は範囲の左端の列を検索して 検索値を含む行にある指定列番号のセルの値を取り出すための関数です。 郵便番号を検索値とする場合には一番左端に郵便番号の列が無ければなりません。お示しのような場合には郵便番号はC列にありますのでA,Bなどの列のデータを取り出すことはできません。 お示しのVLOOKUP(D1,A!$A$1:$D$85,4,FALSE)の式はD1セルの値をAシートのA1セルからA85セルの範囲で検索し、4列目すなわちD列の値を取り出すことを意味しています。仮に郵便番号がD1セルにあるとしたら、その値をAシートのA列で検索できなければできません。すなわちAシートのA列に郵便番号が無ければなりません。

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

ほんとぉ~~~!っに!ごめんなさい。 No.3・4です! 画像を見てやっと質問の内容が理解できた感じです。 今までの回答は無視してください。 質問の画像ではSheet1のデータは必ずSheet2にあるようなので 配列数式にする必要なないと思います。 (と言うことはSheet1の作業用の列は不要になります) 万一、Sheet1にSheet2のデータにないものがあれば配列数式にしなくてはならないような気がします。 しかし、数式を作った後気が付いたのでとりあえずそのままの数式を書かせていただきます。 ↓の画像でSheet1の作業列D2は =IF(C2="","",IF(COUNTIF(Sheet2!$C$2:$C$1000,C2),ROW(A1),"")) としてオートフィルでコピー Sheet2の作業列D2は =IF(C2="","",IF(COUNTIF(Sheet1!$C$2:$C$1000,Sheet2!C2),"",ROW(A1))) として同じくオートフィルでコピー そして、Sheet3のA2セルは =IF(ISERROR(INDEX(Sheet1!A$2:A$1000,MATCH($C2,Sheet1!$C$2:$C$1000,0))),"",INDEX(Sheet1!A$2:A$1000,MATCH($C2,Sheet1!$C$2:$C$1000,0))) としてB2セルまでオートフィルでコピー C2セルは =IF(COUNTA(Sheet1!$C$2:$C$1000)>=ROW(A1),INDEX(Sheet1!$C$2:$C$1000,SMALL(Sheet1!$D$2:$D$1000,ROW(A1))),IF(COUNTA(Sheet1!$C$2:$C$1000)+COUNT(Sheet2!$D$2:$D$1000)>=ROW(A1),INDEX(Sheet2!$C$2:$C$1000,SMALL(Sheet2!$D$2:$D$1000,ROW(A1)-COUNTA(Sheet1!$C$2:$C$1000))),"")) D2セルは =IF(ISERROR(INDEX(Sheet2!A$2:A$1000,MATCH($C2,Sheet2!$C$2:$C$1000,0))),"",INDEX(Sheet2!A$2:A$1000,MATCH($C2,Sheet2!$C$2:$C$1000,0))) としてE2セルまでコピー 最後にA2~E2セルを範囲指定し、E2セルのフィルハンドルで 下へコピーすると画像のような感じになります。 今回は希望に近い形になったでしょうか? 尚、前回までのアップした画像は大きく外しておりましたので 削除させていただきます。 どうも何度も何度もごめんなさいね。m(__)m

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

No.3です! たびたびごめんなさいね。 前回は的外れみたいで失礼しました。 もう1回↓のように表を作ってみました。 今回は表1・表2はSheet1にあり、それをSheet2に表示させるようにしてみました。 表1・表2の作業列は前回の回答同様の数式にしています。 Sheet2のA2セル(配列数式になりますので前回同様の操作をしてください)に =IF(COUNT(Sheet1!$A$2:$A$100)>=ROW(A1),INDEX(Sheet1!$B$2:$B$100,SMALL(Sheet1!$A$2:$A$100,ROW(A1))),IF(COUNTA(Sheet1!$B$2:$B$100)>=ROW(A1),INDEX(Sheet1!$B$2:$B$100,SMALL(IF(Sheet1!$A$2:$A$100="",ROW($A$1:$A$99)),ROW(A1)-COUNT(Sheet1!$A$2:$A$100))),IF(COUNTA(Sheet1!$B$2:$B$100)+COUNT(Sheet1!$F$2:$F$100)>=ROW(A1),INDEX(Sheet1!$G$2:$G$100,SMALL(Sheet1!$F$2:$F$100,ROW(A1)-COUNTA(Sheet1!$B$2:$B$100))),""))) という数式を入れ Shift+Ctrl+Enter 氏名のB2セル(配列数式ではありません)に =IF(COUNTA(Sheet1!$B$2:$B$100)>=ROW(A1),VLOOKUP($A2,Sheet1!$B$2:$D$100,COLUMN(B1),0),"") という数式を入れ、隣のC2セルまでコピー 性別のD2セルに =IF(ISERROR(VLOOKUP($A2,Sheet1!$G$2:$I$100,COLUMN(B1),0)),"",VLOOKUP($A2,Sheet1!$G$2:$I$100,COLUMN(B1),0)) という数式を入れ、となりのE2セルまでコピー 最後にA2~E2セルを範囲指定し、E2セルのフィルハンドルで 下へコピーするとSheet2のような表になります。 こんな感じが希望だったのでしょうか? 以上、お役に立てれば幸いですが、 これも的外れであったり、他の良い方法があれば 読み流してくださいね。 何度も失礼しました。m(__)m

この投稿のマルチメディアは削除されているためご覧いただけません。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! 解釈が違っていたらごめんなさい。 表1と表2の電話番号データの重複をまず、表示させ 表1と表2の残りのデータを続けて表示させれば良い訳ですかね? 一応そういうことだとしての回答になります。 色々方法はあるかと思いますが、 一例としてです。 ↓の画像で説明させていただくと 表1・表2とも作業列を使わせてもらいます。 表1のA2セルは =IF(B2="","",IF(COUNTIF($G$2:$G$100,B2),ROW(A1),"")) としてオートフィルで下へコピーします (今回は100行まで対応できる数式にしていますので、100行目くらいまでコピーしてもOKです) 表2のF2セルに =IF(G2="","",IF(COUNTIF($B$2:$B$100,G2),"",ROW(A1))) として同じくオートフィルで下へコピー 結果を表示させたいセル、K2セルにかなり長い数式になりますが、 =IF(COUNT($A$2:$A$100)>=ROW(A1),INDEX($B$2:$B$100,SMALL($A$2:$A$100,ROW(A1))),IF(COUNTA($B$2:$B$100)>=ROW(A1),INDEX($B$2:$B$100,SMALL(IF($A$2:$A$100="",ROW($A$1:$A$99)),ROW(A1)-COUNT($A$2:$A$100))),IF(COUNTA($B$2:$B$100)+COUNT($F$2:$F$100)>=ROW(A1),INDEX($G$2:$G$100,SMALL($F$2:$F$100,ROW(A1)-COUNTA($B$2:$B$100))),""))) とし、この列だけは配列数式になってしまいますので、 この画面から数式をコピー&ペーストで貼り付けただけではエラーになると思いますので、 貼り付け後、F2キーを押すか、数式バー内で一度クリックし、編集可能にします。 そして、Shift+Ctrl+Enterキーで確定します。 これで数式の前後に{ }マークが入り配列数式になります。 そして、L2セル(ここは配列数式ではありません!)に =IF($K2="","",IF(COUNTA($B$2:$B$100)>=ROW(A1),VLOOKUP($K2,$B$2:$D$100,COLUMN(B1),0),VLOOKUP($K2,$G$2:$I$100,COLUMN(B1),0))) とし、オートフィルでM2セルまで数式をコピーします。 最後にK2~M2セルを範囲指定し、M2セルのフィルハンドルで下へコピーすると画像のような感じになります。 以上、参考になれば幸いですが、 的外れであったり、他に簡単で良い方法があれば読み流してくださいね。m(__)m

この投稿のマルチメディアは削除されているためご覧いただけません。
1965okam
質問者

補足

丁寧な回答ありがとうございました。 画像を添付することができることを知らなくて、質問の意味を 正確に伝えることができませんでした、申し訳けありません。  とりあえず、伝わるかわかりませんが、文字のみで表現しますと、「表1」と「表2」の項目が異なる表を「電話番号」で「識別」させ 表を1つにしたいということです。 例えば、「表1」の項目が「電話番号、氏名、住所」、「表2」の項目が「電話番号、性別、趣味」だった場合。 表1と表2をまとめて、「表3」として「電話番号、氏名、住所、性別、趣味」の4項目からなる表を作成したいという意味です。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

シート1およびシート2での電話番号は同じシート内では重複する電話番号は無いとします。 そこで例えばシート1では1行目に項目名がありC列には電話番号の項目名があるとしてD列までの表であるとします。シート2ではD1セルに電話番号と入力されE列までの表であるとします。 まとめの表をシート3に作るとします。 初めにシート1のC列をコピーしてシート3のA1セルに貼り付けます。その後にシート2のD2セルから下方をコピーしてシート3のA列のデータの後に貼り付けます。 その後にA列を選択してからエクセル2007でしたら「データ」タブで「重複の削除」を選択して重複の電話番号がない状態にします。 エクセル2003でしたらA列を選択してから「データ」メニューから「フィルタ」さらに「フィルタオプションの設定」と進んで、表示される画面で「重複するレコードは無視する」にチェックをしてOKします。 その後にB1セルから右の列にはシート1での項目名、ついで、シート2での項目名を必要なものだけ貼り付けます。 最後にB2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方向にもオートフィルドラッグします。 =IF(OR(COUNTIF(Sheet1!$C:$C,$A2)=0,COUNTIF(Sheet1!$1:$1,B$1)=0),"",INDEX(Sheet1!$A:$D,MATCH($A2,Sheet1!$C:$C,0),MATCH(B$1,Sheet1!$1:$1,0)))&IF(OR(COUNTIF(Sheet2!$D:$D,$A2)=0,COUNTIF(Sheet2!$1:$1,B$1)=0),"",INDEX(Sheet2!$A:$E,MATCH($A2,Sheet2!$D:$D,0),MATCH(B$1,Sheet2!$1:$1,0))) これで電話番号ごとにシート1とシート2の表がまとめられて表示されます。

1965okam
質問者

補足

すみません 何度も、丁寧な回答をいただきありがとうございます。 かなり私の質問の意図が通じてきたように思います。 ようやく、画像添付の方法がわかったので、画像を添付しましたので、申し訳けありませんが、もう一度回答をお願いできないでしょうか、 よろしくお願いします。 「VLOOKUP」関数を用いて以下のとおり自分なりに考えてみました。 例えば「VLOOKUP(D1,A!$A$1:$D$85,4,FALSE)」(セル名、シート名は無視してください)では 表2の1行(例えば、性別の行のみ)を表3くっつけることはできましたが、2行とも(性別と趣味)を表3にまとめることができません。 「列番号」の「4」に問題があるように思っております。 質問としましては、表1、2を表3のような形にまとめられることができれば、良いです、あとは、エクセル関数に不慣れなため手作業で修正しても良いと思っております。 もし、御提示されております数式を用いなとできない場合は、お手数ですが、関数の意味が不明なものが多くて理解できないため、関数の意味まで御教示いただけないでしょうか。よろしくお願いいたします。

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

VLOOKUPで検索とかヘルプを見てみてください。

関連するQ&A

  • 教えてください!エクセルで二つの表をまとめる方法

    エクセルの二つの表を一つにまとめる方法がわかりません。 表1(○○組合加盟店リスト)・表2(○○協会加盟店リスト)があります。 この二つの表をひとつにまとめ、両方の団体の加盟店なのか、片方の団体の加盟店であればどちらの団体に加盟しているのかわかる表にしたいです。 それぞれ列には左から順番に会社名・住所・電話番号・FAX番号・・・と類似した内容が入っておりますが、会社名や住所は若干入力の仕方に統一性が無いので、共通キーとしては電話番号が使えそうです。 また表一は8000行ぐらい、表2は1500行ぐらいです。 よろしくおねがいします。 ○やってみたこと:両方の表ともA列に電話番号をおき、A列を優先に昇順に並べ替えました。そして表1の下に表2を貼り付け、VLOOKUP関数などを使ってユニーク表を別なシートに作りました。関数は一回目に出てきた値しか拾ってくれないみたいなので、二回目に表1と重複している表2のデータがどれなのか・・・

  • さよなら手書き7にエクセル表を読ませたい

    さよなら手書き7とPDFいけまっせ7とを使用している。4行×7列のエクセル表を「いけまっせ」のセル指定で1から28まで作成したテキストボックスを紐付けすると、1列目に作業所番号、責任者、住所、電話番号、2~6列目以降に登録番号、代表者名、住所、電話番号、の表が出来、10作業所の登録者リストが出来る。 おなじ事を「さよなら」で行うとエクセルの1列目に表題を28行、2列目にデータの28列2行の表にして差し込むことになる。「さよなら」に表を読ませる手段はあるのでしょうか? ※OKWAVEより補足:「ソースネクスト株式会社の製品・サービス」についての質問です。

  • エクセルで二つの表を一つにする方法

    エクセルの二つの表を一つにまとめる方法がわかりません。 表1・表2とも共通なところは、列Aから順に会社名(表1は(株)などの表示あり、表2には無い)・住所(表1には都道府県名から記載あり、表2には無い。またその逆パターンもあり)・電話番号・FAX番号があります。電話番号やFAX番号も何本か回線があるものもあり、必ずしも一致するとは限りません。 E列以降は表1には代表者名、表2には、交渉日、担当者名、交渉内容と別の物が入っています。 1行に一つの会社の情報が入っていますが、行についてはA列とB列の並び順はバラバラで、それぞれ重複している会社もあれば、他方に無い会社データもあります。 この二つの表を一つにまとめるため、最良なエクセルの使い方を教えてください!よろしくお願いします。

  • エクセル 表

    エクセルについて質問があります 表を作成しています 例えば A4に項目 B4にメーター値 C4には B3までの総合計とB4の合計の値が 入力 されるような表を作成したいです B列に数値がなければ Cは その際は 例えばB列が0なら C欄は空欄になるように設定したいです ちょっと分かりづらい説明になってしまいましたが どなたか この関数をお教え下さい よろしくお願い いたします

  • エクセルの表の作り方

    いつもお世話になっております。 質問なのですが、yahoo、またはiタウンページの電話帳からA列に企業名、B列に電話番号、C列に住所が入った表を作りたいと思っております。 電話帳をコピー→エクセルにて形式を選択して貼り付け(テキスト) まではできたのですが、空白の行が入り、またすべてA行に入ってしまったりしてなかなかうまくいきません。 どのようにして作成すれば簡単にできるでしょうか。 大量にあるため、なるべく作業の少ないものが希望ですが、 急ぎのため何か手段をご存知の方いらっしゃいましたら ご教授よろしくお願いいたします。

  • 条件に応じて座席表をつくりたい(エクセル以外で)

    簡単なWEBページなら作成できるレベルの者です。 学校などで生徒が座る座席表を作成したいと思っています。 現在はエクセルのVLOOKUP機能などを使用していますが、出席番号などを貼り付ける作業に時間がかかるので、手軽に短時間で作成できるものを考えています。 その時々の条件に応じて、自動的に座席に配置できるようにしようと思っています。 TOPページに条件を入力すると別ページで座席表に出席番号などが配置されているものを考えています。(ちなみに、教室には使用できる列や人数など制限があるので、そういった条件の入力なども必要になってくると思われます。10列×一列20人合計200人収容可能の教室でも、使用するのが150人なら10列×一列15人というように、条件によって自動的に配置できればと思います。)(また配置する人にも番号をつけていますが、1234・・・と順番に並んでいるわけではなく、1356・・・など番号が抜けている場合もでてきます。) 上記のような条件下ですが、こういったものはJavascriptで作成可能でしょうか? それとももっと高度な知識や技術がないと無理でしょうか。 どういったものなら作成できそうか教えてください。できれば参考になりそうなWEBページなどがあれば教えていただけますか?

  • エクセルで列数(列の線の位置)の違う表の作成方法を教えてください。

    はじめまして。 現在、申込書のようなものを作成しています。 エクセルで作成しているのですが、記入項目の列(列の線の位置)が項目によってまちまちです。 たとえば、住所のラン(1列)の下の電話番号の項目では2列、その下のメールアドレスやHPなどは電話番号記入欄の途中から列が区切られています。 エクセルでは互い違いに列を作成することは不可能なのでしょうか? これを書いている最中に考えたのですが、かなりマスを細分化して、結合すればなんとかなりそうなんですが、申込書のような複雑な書式の場合皆さんかなりマスを細分化して作成しているのでしょうか? それとも、illustratorで作成するのがオーソドックスなのでしょうか? わかりにくい質問で申し訳ありませんがどうかよろしくお願いいたします。

  • エクセルで表に記入

    エクセル初心者です。 よろしくお願いします。 図のように列に並んだ数字を自動的に(できればabcdなど順番をつけて) 表に記入することはできますか?

  • エクセルで作成した表から、宛名を印刷したい。

    エクセルで住所録もどきを作成してあるのですが、B列に名前、C列に郵便番号、D列に住所が入っています。この表から簡単に宛名のシールを印刷できないでしょうか? これができると大変助かります。よろしくお願いします。

  • エクセルで出現回数のランキング表を作りたい

    ・6桁以下の選手番号 ・試合日(西暦8桁) ・試合結果 ・その他 無作為の順番で上記のデータが入ったエクセルの表があるのですが、 この表を使い、試合に出た回数が多い順番で選手をランキング付けしたいのです。 関数やVBAは若干かじったことある程度の経験しかないのですが、 COUNTIF関数を使い、その選手にとって、 その試合が何試合目なのかは、一応目で分かるようにはなりました。 ※ 選手番号がA列だとすると、B1=COUNTIF($A$1:A1,A1)をB列にコピーしました。 本当はこの数字を上手く使ってランキング表を作ろうと思ったのですが、 良い案が浮かばず、今回質問させていただきました。 1位 選手番号 試合回数 2位 選手番号 試合回数 ・ ・ ・ できることなら、上記のようにランキング表を作り、 また選手の数が多いので3回以上試合を行なっている選手だけで表を作りたいのですが、 関数やVBAを使い上記の表を作成する良い案はありませんでしょうか?

専門家に質問してみよう