• 締切済み

Excelで一覧に入力→各シートに反映・転記

エクセルについてご質問させていただきます。 基になるシートの行には項目(日付や時間・担当者・要件・取引先など15項目ほど)があり、列には毎回、メールやFAXなどで送られてくる確定した内容を打ち込んでいます。    A    B     C        D・・・ 1 日付  担当者   要件    取引先 2  5/4  鈴木   打合せ     A社   3  5/4  佐藤   プレゼン    B社 このように、どんどん下に確定した内容を打ち込んでいくシートです。これを基に、このシートに打ち込んだ内容(15項目1行)を、それぞれ同じブック内の担当者別シートに反映させたいのです。 ただ、1日で同じ担当者が同じ日に違うお取引先での用件があることもありますし(A社から移動してB社で打合せ)、同じお取引先で違う時間にアポがあったり(11:00と15:00に同社で打合せなど)します。 今までは集計のため一覧のシートに、担当者別に予定を把握するのに個別(担当者別シート)にそれぞれ入力していましたが、二度手間のため、基のシートに一度入力すれば自動で反映できたらいいな、と思いご質問させていただきました。 何度か関数など使ってトライしてみたのですが、同じ日に複数の用件があるとうまくいかず、もやもやしています。(後から同じ日に違う用件が入ってきたりするので。) 1日の枠は3行確保していますが、lookup関数だと同じ日付や担当者名があるためうまくいきませんでした。 私の勉強不足と、つたない説明で大変申し訳ないのですが、ご教授頂ければ幸いです。 すみませんが、よろしくお願いいたします。

みんなの回答

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.5

最終的にどのようなレイアウトで表示したいのかによって使用する関数などが異なりますが、たとえばどこかのセル(例G1セル)に担当者の名前を入力(入力規則のリストでドロップダウンリストから選択)したら、その担当者のデータ一覧を表示したいなら以下のような数式を入力し下方向にオートフィルします(添付画像参照)。 H4セル(取引先) =INDEX(D:D,SMALL(INDEX(($B$2:$B$100<>$G$1)*10000+ROW($B$2:$B$100),),ROW(D1)))&"" F4セル(日付) =IF($H4="","",INDEX(A:A,SMALL(INDEX(($B$2:$B$100<>$G$1)*10000+ROW($B$2:$B$100),),ROW(B1)))) G4セル(要件) =IF($H4="","",INDEX(C:C,SMALL(INDEX(($B$2:$B$100<>$G$1)*10000+ROW($B$2:$B$100),),ROW(C1)))) ただし上記の数式は、表示データ数が多くなると再計算に時間がかかりますので、たとえば今月のデータや今日のデータだけを表示させる数式に変更するなどして表示データ数を減らす工夫をすることになります。

回答No.4

No.3です。No.3で、「こういうのはピボットテーブルで」と言いましたが、更に簡便な方法は、元のデータベースに対して、「オートフィルタ」を設定することです。 表中のどこかにカーソルを置いた状態で、リボン(古いバージョンではメニューバー)のデータのフィルタをクリックするだけです。表示されるプルダウンで担当者名を指定すれば、その人のレコードだけが抽出されます。抽出された表をコピーして、他のシートに貼り付け・保存してもいいでしょう。

回答No.3

まず、データベースでは、何をするにせよ、各レコード(行)に一意な番号を振ったほうがいいです。「日付」の列の左あたりに1列、挿入してください。   A   B   C    D    E 1 No. 日付 担当者  要件  取引先 2  1  5/4  鈴木  打合せ   A社 3  2  5/4  佐藤  プレゼン  B社 ★ ご質問のような抽出表を作るためには、質問者さんが入力されているデータベースに対して、「ピボットテーブル」(クロス集計の機能)を使うのが最もお手軽です。あっという間に終わります。新たなデータが入力されても、手動にはなりますが、抽出表の更新もできます。この方法がExcelなど表計算ソフトの通常の方法です。 さて、それでもあえて、ワークシート関数で表示させる方法を考えてみました。できますが、たいへん面倒くさいです。 データベースのシートを「Sheet1」とします。担当者の一人である「鈴木」さんのシートに、これと同じ作りの表を用意します。そして、「鈴木」シートの表中の各セルに式を入力しておくことで、該当データを表示させます。「鈴木」シートから、「日付」も含めて全てのデータを消しておきます。   A   B   C    D    E   F   G    H 1 No. 日付 担当者  要件  取引先   シート名 鈴木 2 3 (1)「鈴木」シートに次の文字列と式を入力 H1セル 鈴木 A2セル =min(index(if(sheet1!$A:$A*(sheet1!$C:$C=$H$1)*(sheet1!$A:$A>=row(a1)),sheet1!$A:$A*(sheet1!$C:$C=$H$1)*(sheet1!$A:$A>=row(a1)),9999),)) B2セル =index(sheet1!$A:$E,match($A2,sheet1!$A:$A,),match(B$1,sheet1!$1:$1,)) A2の式の解説。式中、「sheet1!$A:$A*(sheet1!$C:$C=$H$1)*(sheet1!$A:$A>=row(a1))」という部分で、数列を作っています。その内容は、「Sheet1」の各行のうち、その行番号が「「鈴木」シートA2セルの行番号以上」でなおかつC列に「鈴木」と入力されている行についてはその行のA列の数値を、それ以外の行についてはゼロを並べるというルールで作られる数列です。続いてIF関数で、できた数列のうちゼロのみを大きな数(9999)に置き換えた数列を作っています。この数列をINDEX関数で配列にし、その配列の中の最小値をMIN関数で求めています。要するに、C列に「鈴木」が入力されている「Sheet1」の全ての通し番号が「鈴木」シートに抽出され、それらの最大値が表示された行以下に続く「鈴木」シートの行には「9999」が表示されることとなります。 (2) 「鈴木」シートのA2セルをコピーし、A2:A10の範囲に貼り付けます。B2セルをコピーし、B2:E10の範囲に貼り付けます。 (3) 「鈴木」シートのB列の書式を「日付」などに設定します。

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

解答No1です。 シート1で空のセルはシート2などでは0の表示になりますので空のセル表示にするためにはシート2のA3セルには次の式を入力することがベターでしょう。 =IF(ROW(A1)>COUNTIF(Sheet1!$B:$B,$B$1),"",IF(INDEX(Sheet1!$A:$R,MATCH(INDEX(Sheet1!$T:$T,MATCH(ROUNDDOWN(INDEX(Sheet1!$S:$S,MATCH($B$1,Sheet1!$B:$B,0)),-9),Sheet1!$S:$S,0))+ROW(A1),Sheet1!$T:$T,0),COLUMN(A1))=0,"",INDEX(Sheet1!$A:$R,MATCH(INDEX(Sheet1!$T:$T,MATCH(ROUNDDOWN(INDEX(Sheet1!$S:$S,MATCH($B$1,Sheet1!$B:$B,0)),-9),Sheet1!$S:$S,0))+ROW(A1),Sheet1!$T:$T,0),COLUMN(A1))))

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

データがシート1に有るとします。 シート1の1行目にはお示しのような項目名がR列までに並んでいるとし下方にデータが入力されるとします。 複雑な処理になりますので作業列をS列とT列に設けます。 S2セルには次の式を入力して下方にドラッグコピーします。 =IF(ROW(A1)<=COUNT(A:A),IF(COUNTIF(B$2:B2,B2)=1,ROUNDDOWN(MAX(S$1:S1),-9)+1000000000+A2*10000+COUNTIF(B$2:B2,B2),ROUNDDOWN(INDEX(S$1:S1,MATCH(B2,B:B,0)),-9)+A2*10000+COUNTIF(B$2:B2,B2)),IF(ROW(A1)<=COUNTA(A:A)-1+INT(MAX(S$1:S1)/1000000000),(ROW(A1)-COUNTA(A:A)+1)*1000000000,"")) T2セルには次の式を入力して下方にドラッグコピーします。 =IF(S2="","",RANK(S2,S:S,1)) そこで準備は終わって担当者ごとのシートを作るわけですが例えばシート2から担当者の数のシートを用意します。 その上でシート見出しでシート2を選択したのちにCtrlキーを押しながら必要なシートをクリックします。これでシート2を含めた作業グループが出来上がります。 その上でシート2のA1セルには担当者名の文字を入力しB1セルには作業グループを解除後に担当者の名前を入力することにします。 2行目のA2セルからR2セルまでにはシート1と同じ項目名を入力します。 A3セルには次の式を入力してR3セルまでドラッグコピーしたのちに下方にもドラッグコピーします。 =IF(ROW(A1)>COUNTIF(Sheet1!$B:$B,$B$1),"",INDEX(Sheet1!$A:$R,MATCH(INDEX(Sheet1!$T:$T,MATCH(ROUNDDOWN(INDEX(Sheet1!$S:$S,MATCH($B$1,Sheet1!$B:$B,0)),-9),Sheet1!$S:$S,0))+ROW(A1),Sheet1!$T:$T,0),COLUMN(A1))) A列でのデータの表示形式は日付から設定します。 これらの操作が済んだらシート1を選択すれば作業グループは解除されます。その後に例えばシート2のB1セルに担当者の名前を入力することで、データの古い順に3行目から下方に表示されます。 シート1で入力の日付が下行に古い日付のデータが入力されても瞬時に対応します。 シート名を担当者名とした場合には該当するシートのB1セルにも担当者名を入力して使用してください。

関連するQ&A

  • EXCELで3つのシートのデータを統合したい

    2つの会社(A社,B社)が合併し、それぞれ別の基幹システム(旧システム)を使っていた為、 新たに全く別の基幹システム(新システム)を作成中なのですが、 A社、B社共通の取引先もあれば、それぞれ独自の取引先もあり、 取引先のデータを新システムに移行させる為、エクセルで一覧を作成中です。 1つのエクセルファイルに以下のような3つシートがあります。 シート(1) A社得意先コード 取引先名 郵便番号 住所         取引条件 ・・・・ 000001      (株)○○○ 111-1111 ○○県○○市・・・ 20日締め ・・・ 000002      (株)▲▲▲ ・・・・ シート(2) B社得意先コード  取引先名 郵便番号 住所         取引条件 ・・・・ 000001-00     (株)○○○ 111-1111 ○○県○○市・・・ 20日締め ・・・ 000002-00     (株)□□□ ・・・・ シート(3) A社得意先コード B社得意先コード 新システム得意先コード 000001      000001-00    000001-000 000002                 000002-000            000002-00    000003-000 シート(1)(2)のデータをシート(3)のコード対比表を基にシート(3)にくっつけたいのです。 A社得意先コード B社得意先コード 新システム得意先コード (1)取引先名 (1)郵便番号 (1)住所 (1)取引条件 ・・・・ (2)取引先名 (2)郵便番号 (2)住所 (2)取引条件 ・・・・ 000001      000001-00    000001-000 (株)○○○ 111-1111 ○○県○○市・・・ 20日締め ・・・ (株)○○○ 111-1111 ○○県○○市・・・ 20日締め ・・・ (ここ見づらくてすいません) シート(3)に統合より新たにシートを作成した方がやりやすければそれでもかまいません。 シート(1)(2)にそれぞれ約6000行、80項目くらいあり、VLOOKUPでちまちまやるのは作業ミスを起こしそうであまりやりたくありません。 EXCEL2007を使用しております。 何かいい方法がありましたらご教示願います。

  • 入力時に別シートにも自動的に反映させたい(エクセル)

    下記のような項目の表を作成しています。 受注を受けるたびに入力し(シート1全体)、月ごとに設定したシート(シート2,3・・・)にも入力しています。 これをシート1に入力すれば自動的に別シートにも反映されるためにはどのようにしたらよいでしょうか。 1行目/発注No 品名 数量 売価 売価計 原価 原価計 納期 品番 取引先CD それぞれの項目の下(2行目以下に数量、日付等(金額のところは計算式を入れてます。)を入力しています。最後には合計金額等が入ります。 それを納期(2004/5/1)月別にシートに分けます。 私の説明でご理解頂けたでしょうか。 マクロを使った方がよいのでしょうか。あまり知識が ないので分かりやすくご説明頂ければ幸いです。 宜しくお願いします。

  • Excelで入力が反映されるものを作りたい

    助けてください。 作りたいプログラムは、まずエクセルで入力画面を作ります。 (1)名前(2)生年月日(3)住所(4)備考 の入力画面がほしいです。マクロかなんかでできるでしょうか? マクロでなくてもだれでも簡単に入力できればいいのですが・・・ その後、これらの入力がされて決定ボタンを押すと、 別シートに作成した表の中にこれらを順に表示していきたいのです。 (1)名前で入力された項目はシート2のA1セル (2)生年月日で入力された項目はシート2のB1セル (3)住所    〃   項目はシート2のC1セル (4)備考    〃   項目はシート2のD1セル に入力されるようにしたいのです。 その他、最初の入力画面に 『 』行目 という項目を作って、そこに『2』と打てばそれぞれシート2の2行目に同じことを出力したいのですがどうすればいいのでしょうか? 手順等、作り方まで教えていただけると本当に嬉しいです。 どなたか知っている方がいましたら助けてください。 お願いします。

  • エクセル2007:シート内のデータの自動転記

    Excle2007を使用しています。 シート1のデータをシート2に自動で転記したいと思っています。 シート1 作業件名ごとにその内容、作業者名が書いてある表。 1行ににつき作業1件 A列:日付 B列:作業件名 C列:内容 D列:作業者名 シート2 作業者ごとに従事した作業をまとめた一覧表で、ひとりにつき1ページ。 表の形式(見た目)はシート1とはまったく別のもの。 作業者ごとに空欄の表が既に作られており、 1ページ目:Aさん 2ページ目:Bさん という風に、1シートに改ページしながら全ての作業者について1ページずつ一覧表になっている。 1ページは25行を使用しており、 Aさん(1ページ目)は1~25行(Bさん(2ページ目)は26~50行)となる。 1ページ目の表のうち、シート1のデータを入れられる行は11~21行。 3件あれば3行使って残り8行は空欄ということになります 日付欄はシート2のA11~A21 件名欄はシート2のB11~B21 内容欄はシート2のD11~D21 シート2には、作業者の住所や生年月日など、シート1にない項目があらかじめ入力されている。 いつもはシート1を入力後に作業者基準で並べ替えをして印刷し、 シート2の該当する作業者のページに手打ちでデータ入力しています。 シート1のデータをシート2の該当箇所に転記するだけなので、シート1が完成した段階で シート2を自動で作れたら作業時間の短縮になると思い、考え始めました。 が、VBAに詳しくないため、どこからどう手をつけたらいいものかわかりません。 お詳しい方、お知恵をいただけましたらと思います。 不足情報等ございましたらご指摘いただけましたら補足をさせていただきますので どうぞよろしくお願いいたします。

  • エクセル2007 VBA シート1に入力されている項目をシート2の中で

    エクセル2007 VBA シート1に入力されている項目をシート2の中で検索し、新規シートにコピーする方法についてです。 例) シート1 A        B  C 取引先名 品目C 数量 A      1-1 25 B      あ12  5 C      T-8 10 :       :    : シート2 A       B    C      D    E 得意先C 取引先名 製品名  品目C  数量 001    (株)B    ケーブル あ12  10 002    (株)A    箱     1-1  20 002    (株)A    箱     1-1   7 002    (株)A    箱     1-1   5 :       :     :      :     : 上記の状態で、シート1の項目をシート2から検索します。 ・取引先名は一部分でも一致するあいまい検索で、品目Cは完全一致で検索したいです。 ・シート2には検索項目のデータが複数あるのですが、結果が一致する行を選択し新規シートにコピーペーストしたいです。 出来れば下記の処理も実行したいです。 *シート1の数量を、シート2の1行目から順に検索したデータから計算して、シート1の数量に満たした分だけをコピーペーストしたいです。  シート1の数量に満たさない場合も取り敢えずシート2にある分のデータをコピーペーストして、処理が終わったら不足している項目データに印をつける。  取引先Aの場合→数量が20個と7個の行をコピーペーストする感じです。 グーグルで調べたのですが、調べ方が悪いのか最初から躓いてしまいました。 今回はコードを記入していなくてすみません。 サンプルコードありで教えていただけるととても助かります。よろしくお願いします。

  • 異なるシートからの集計と転記について

    収入明細書と、支出明細書があります。 それぞれ書式が違います。 それぞれの明細書には日付、摘要、単価、個数、金額等を打ち込みますが、収入と、支出の明細書では若干項目や、セルなどの位置が違います。 収入、支出の明細書は取引がある場合は、1日1枚の提出なので日ごとに1シート作成していかないといけないかなと思っています。 この2つの明細書の内訳内容をもう1つの収支報告書に転記し、 日付、摘要、金額等を集計し、入出金の流れや、現金残高などを把握します。 漠然とした内容でお答え頂くにもわかりにくいのではないかと思います。ごめんなさい。 ただ、別々1日1シートで、入出金の明細の書式が違うのでどうすればいいのか全然思い浮かばず、どうすべきなのかをお知恵をいただけたらと思っています。 ・私が考えたのは、それぞれのシートを新たな1シートに必要項目のみとばす。(収入と支出でセルの位置や項目が違うのでうまくとばせないのが問題) ・上記のシートからさらに新たなシートに収支報告書用に整列させる。(収支明細書で使用しなかった行が空欄でとんでくるので邪魔になる) ・上記のシートを収支報告書にとばす。 とまでは考えたのですが、問題が山積みで… きっともっとよい方法があるのではと思っています。 私はエクセル初心者ではありませんが、独学ですので本当の意味での理解が出来ていないと思います。 わかりやすく教えて頂けたらうれしいです。 また、マクロはまったくわかりません。 少しずつ勉強していきたいと思っていますが、出来れば関数等で作成できたらと思っています。 どうかよろしくお願い致します。

  • エクセル2000でシートの一番下に反映させたい

    <一覧シート> 会社名:品名:日付:数量:金額 A社  ○:11/1:10個:1000 A社  ○:11/3:10個:1000 A社  ×:11/2:10個:2000 B社  △:11/1:5個:500 B社  ▲:11/2:5個:500 上記の様なデータが入力してあり、入力するだけの シート(入力シート)が別にあります。 入力シートのデータ(例えば、A社○11/4 5ヶ出荷)が そのまま、一覧シートの入力されているデータの一番下に くるようにしたいのですが、 随時、出荷があり行が追加されていく為 =でセルを指定する事ができなくて困っています。 また入力が複数ある場合も、そのまま一覧シートの一番したに 反映させたいのです。。 解かりにくい説明で申し訳ありませんが、よろしくお願いします。

  • Excel 複数シートから複数条件を別シートに

    Excel2007を使っています。 添付画像のように、A社、B社へ送った見積のうち、発注があったものだけを 別シートに月別一覧として表示させたいです。 A社、B社は別々のシートです。 初めのうちはシート毎にフィルタを使って抽出していたのですが、 データが大量にあるため、別シートで分かりやすく見れるようにしたいです。 また、当てはまる行のうち全ての項目を抽出するのではなく、添付画像のように指定した項目のみを表示させたいです。どなたか教えて下さい

  • Excel VBAで項目ごとに別々のシートに転記したい

    excel VBAで項目ごとに別々のシートに転記したい 困り度: すぐに回答を! excelVBA勉強中の初心者です。 初めて質問させていただきます。 初心者には難しく、行き詰ってしまいました。 仕事で以下のことがしたく、基本書、参考書などを調べて勉強し作成していっているのですが、身近に教えていただける方もおらず、つまづいております。 詳しい作成方法など、詳しい方にご教授いただければと思います。 book(1) 一ヶ月分の売上データが入っており、     A列に取引先名     B列に商品名     C列に件数     D列に合計額     があります(1万行前後)。 book(2) シート1に抽出したい取引先名の一覧(50件ほど)、      シート2以降は転記用でA列に商品の一覧(固定)、      例えば4月分であればB列に件数、C列に金額、     5月分であればD列に件数、E列に金額・・と一年間使用するため、件数・金額は12か月分用意してあります。      シート1にある抽出したい取引先ごとに作成しています。 (1)の売上データを、(2)にあるシート1の取引先一覧と一致するものを抽出して、取引先ごとに分けてあるシートに転記したいのです。 ※(1)の売上データには抽出不要の取引先も多数含まれています。 ※(1)の売上データは同じレコードが存在する場合もありますが、すべて別々のものとみなし、転記先シートには件数・金額ともに合計を表示したい 以上です。 よろしくお願いします。

  • エクセルでの転記について

    関数を使って転記をしています。 Sheet1 が 売上げ全体 Sheet2 が 担当者別 という形で、 Sheet2のB1に、「Sheet1 のA1(担当) が 田中 ならば、Sheet1のB1を入れなさい。そうでなければ空白にしなさい。」という関数を使用し、売上げ金額、経費、利益・・・・等C1,D1,E1・・・と転記するようにしています。 転記自体はうまく行くのですが、担当が「田中」でない場合、空白になるため、10件の売上げの内、田中の売上げが4件しかなかった場合に残りの6件は空白行になってしまい、一覧としてみた場合見栄えが悪くなってしまいます。 原因は、Sheet1のA1が田中なら・・・,A2が田中なら・・・,A3が田中なら・・・と1行ずつ固定して式を入れているからだということは何となく解るのですが、10件の売上げの中の田中だけをSheet2を転記しなさいという関数が色々調べているのですが答えにたどり着けません。 どういった関数にすれば、可能なのでしょうか? どうぞよろしくお願いします。

専門家に質問してみよう