• ベストアンサー

項目が違う複数のシートを1つのシートにまとめたい

項目が同じである2つのシートと違う項目の1つのシートの必要項目だけを1つのシートに合わせたい。 A・Bのシートの項目 【項目】 番号 販売先 金額 コード S 日付 (実際は20項目あります)      09912 新潟  ¥200  Q1  カ 3/3 Cのシートの項目 【項目】場所 番号 担当 部門 金額 予定(実際は20項目あります)     東京 21  安藤 営業 ¥100  1/1 上記3つのシートを 【項目】場所 番号 担当 部門 S 金額 (実際は20項目以上になります) のようにしたいのです。 だたし、A・Bシートの番号が同じであれば金額は合計額とし、Cシートに同じ番号があった場合、2行に分けて表示ができればと思っています。VLOOKUPや統合等を試したのですが、適切ではないようで上手くいきません。 可能な方法がありましたら、どうぞご教授ねがいます。

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

  • ベストアンサー
回答No.3

回答1です。 >こちらの方法ですと割りと簡単でしたが、シートCに合わせることができないという状態です。(汗) 回答1の(2)の並べ替えを、以下の手順でしてみてください。 (1)シートA2、シートB2の1行目に1行挿入して作業行を追加します。 (2)追加した行に次の式をフィルします。これで2行目の見出しが、シートCの何列目に当たるかが判ります。シートCにない列は999になります。    =IF(COUNTIF(シートC!$B$1:$Z$1,B2)=0,999,MATCH(B2,シートC!$B$1:$Z$1,0))    *セル範囲は実情に合わせてください。 (3)全体を選択して「データ」-「並べ替え」ー「オプション」ボタンー方向「列単位」を選択で、列の並べ替えをします。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/sort.html#gyou (4)999の列を削除し、さらに作業行の1行目を削除します。 以上です。 いきなり複雑な式で処理するのもひとつの手ではありますが、ご自身のためには、まずはExcelの豊富な機能を活用できるようになることが大切かと思います。

その他の回答 (3)

回答No.4

回答3です。補足です。 回答3ではシートCの順番に並びますが、シートCだけにある列がまだ挿入されていませんでした。それを挿入する必要があります。 回答3の(4)の前に、たとえば1行目が1、3、4、・・・とあったら1と3の間に1列を挿入するという作業が必要です。 必要な列を挿入したら、シートCから見出し行をコピー/貼り付けて完了です。

florflor18
質問者

お礼

再度、ありがとうございます。 上記の方法を会社でやってみます。 お力をお貸しいただいて、本当にありがとうございましたm(__)m

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

Aシートはシート1にBシートはシート2にCシートはシート3として述べます。 まとめのシートはシート4としますがシート1とシート2の金額は合計してシート3の金額は2行にして表示させるとしていますが、エクセルの操作上は列を分けて表示させることがより効率的です。 以下にはシート4での操作を述べます。 ここではまとめに使う番号はB列にシート1とシート2の金額はF列に、シート3の金額はG列に表示させることにします。 初めに検索のもととなる番号をB2セルから下方にシート1での番号のデータをコピーして貼り付け、その下にはシート2および3の番号のデータを貼り付けます。その後にエクセル2007でしたらB列を選択したのちに「データ」タブの「重複の削除」をクリックして重複の電話番号をなくした状態の番号を表示させます。 次にA1セルには場所と入力します。A2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(ISERROR(INDEX(Sheet3!A:A,MATCH(B2,Sheet3!B:B,0))),"",INDEX(Sheet3!A:A,MATCH(B2,Sheet3!B:B,0))) C1セルには担当、D1セルには部門、E1セルにはSなどと項目名を入力します。その後にC2セルには次の式を入力してE2セルまでオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(COUNTIF(Sheet1!$1:$1,C$1)=0,"",IF(COUNTIF(INDEX(Sheet1!$A:$AX,1,MATCH($B$1,Sheet1!$1:$1,0)):INDEX(Sheet1!$A:$AX,10000,MATCH($B$1,Sheet1!$1:$1,0)),$B2)=0,"",INDEX(Sheet1!$A:$AX,MATCH($B2,INDEX(Sheet1!$A:$AX,1,MATCH($B$1,Sheet1!$1:$1,0)):INDEX(Sheet1!$A:$AX,10000,MATCH($B$1,Sheet1!$1:$1,0)),0),MATCH(C$1,Sheet1!$1:$1,0))))&IF(COUNTIF(Sheet2!$1:$1,C$1)=0,"",IF(COUNTIF(INDEX(Sheet2!$A:$AX,1,MATCH($B$1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$AX,10000,MATCH($B$1,Sheet2!$1:$1,0)),$B2)=0,"",INDEX(Sheet2!$A:$AX,MATCH($B2,INDEX(Sheet2!$A:$AX,1,MATCH($B$1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$AX,10000,MATCH($B$1,Sheet2!$1:$1,0)),0),MATCH(C$1,Sheet2!$1:$1,0))))&IF(COUNTIF(Sheet3!$1:$1,C$1)=0,"",IF(COUNTIF(INDEX(Sheet3!$A:$AX,1,MATCH($B$1,Sheet3!$1:$1,0)):INDEX(Sheet3!$A:$AX,10000,MATCH($B$1,Sheet3!$1:$1,0)),$B2)=0,"",INDEX(Sheet3!$A:$AX,MATCH($B2,INDEX(Sheet3!$A:$AX,1,MATCH($B$1,Sheet3!$1:$1,0)):INDEX(Sheet3!$A:$AX,10000,MATCH($B$1,Sheet3!$1:$1,0)),0),MATCH(C$1,Sheet3!$1:$1,0)))) F1セルにはA+B合計額とでも入力し、F2セルにが次の式を入力したのちに下方にもオートフィルドラッグします。 =IF(B2="","",(IF(COUNTIF(Sheet1!$1:$1,"金額")=0,0,IF(COUNTIF(INDEX(Sheet1!$A:$AX,1,MATCH($B$1,Sheet1!$1:$1,0)):INDEX(Sheet1!$A:$AX,10000,MATCH($B$1,Sheet1!$1:$1,0)),$B2)=0,0,INDEX(Sheet1!$A:$AX,MATCH($B2,INDEX(Sheet1!$A:$AX,1,MATCH($B$1,Sheet1!$1:$1,0)):INDEX(Sheet1!$A:$AX,10000,MATCH($B$1,Sheet1!$1:$1,0)),0),MATCH("金額",Sheet1!$1:$1,0))))+IF(COUNTIF(Sheet2!$1:$1,"金額")=0,0,IF(COUNTIF(INDEX(Sheet2!$A:$AX,1,MATCH($B$1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$AX,10000,MATCH($B$1,Sheet2!$1:$1,0)),$B2)=0,0,INDEX(Sheet2!$A:$AX,MATCH($B2,INDEX(Sheet2!$A:$AX,1,MATCH($B$1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$AX,10000,MATCH($B$1,Sheet2!$1:$1,0)),0),MATCH("金額",Sheet2!$1:$1,0)))))) G1セルにはC金額とでも入力し、G2セルには次の式を入力したのち下方にもオートフィルドラッグします。 =IF(B2="","",(IF(COUNTIF(Sheet3!$1:$1,"金額")=0,"",IF(COUNTIF(INDEX(Sheet3!$A:$AX,1,MATCH($B$1,Sheet3!$1:$1,0)):INDEX(Sheet3!$A:$AX,10000,MATCH($B$1,Sheet3!$1:$1,0)),$B2)=0,0,INDEX(Sheet3!$A:$AX,MATCH($B2,INDEX(Sheet3!$A:$AX,1,MATCH($B$1,Sheet3!$1:$1,0)):INDEX(Sheet3!$A:$AX,10000,MATCH($B$1,Sheet3!$1:$1,0)),0),MATCH("金額",Sheet3!$1:$1,0)))))) これらの式は金額の集計を列が変われば2行目に入力して使用すればよく、C2セルに入力した式は項目を変えた他の列でも、その列の項目に一致する値をシート1からシー3の間で探しデータを引き出してきますので、例で示したようにE列までに制限して使うことはありません。

florflor18
質問者

お礼

回答をいただきまして、ありがとうございます! 関数の多いことに驚きましたが、丁寧な案内によりチャレンジしてみました。なかなか、上手くいきません。データを引っ張ってこれないようです。また、「関数が多すぎる」ようなエラーメッセージが表れることも。私のやり方がまずいようです!! (教えていただいた関数をコピーしたいのですが、会社ではこちらのサイトを開くことができず、手入力でおこなっています・・(汗)) 自宅パソコンに不具合があり、立ち上げてから数分すると停止してしまう事態が数日続いてしまい、御礼が遅くなってしまいました。 申し訳ありませんでした。 上記の教えをもう一度おちついて行ってみます。 ありがとうございました m(__)m また、機会がありましたらどうぞ宜しくお願い致します。

回答No.1

何段階かの手順を踏まないと難しいでしょう。 (1)シートAとシートBをシートコピーしてシートA2、シートB2を用意します。 (2)シートA2、シートB2のフォーマットを、列の挿入、並べ替えなどをしてシートCに合わせます。 (3)シートA2のデータの下にシートB2のデータコピーして追加ます。(シートB2はここで不要) (3)シートA2に「金額合計」列を追加します。    B列に番号、E列に金額があるとして、式「=SUMIF(B:B,B2,E:E)」をその列に入力します。    これで番号ごとの合計が得られます。 (4)「金額合計」のデータをコピーして「金額」に「値貼り付け」します。「金額合計」は削除します。 (5)シートA2を番号で並べ替えます。    次に「データ」ー「フィルタ」ー「フィルタオプション」で「重複したデータは無視する」をチェックしてフィルタします。 (6)フィルタの結果をシートCへ貼り付けます。 以上。 一例です。もっとうまいやり方があるかもしれません。

florflor18
質問者

お礼

ありがとうございます! 幾つかの段階を踏まないといけないのはわかっていたのですが、まず何からして良いか道筋が立てられませんでした。 こちらの方法ですと割りと簡単でしたが、シートCに合わせることができないという状態です。(汗) こちらのお教えを踏まえ、もう少し頑張ってみます。 ご協力いただきまして、ありがとうございました!! また、機会がありましたらどうぞ宜しくお願い致しますm(__)m

関連するQ&A