• ベストアンサー

excelでデータの集計

excel2000での質問です 例えば同じexcelのファイルで シート1にAさんが、決まったフォーマットで入力するとします。項目は 名前、日付、訪問先・・etcです。(数値ではありません) そしてシート2にBさんが同じフォーマットで入力。シート3にはCさんという具合に入力します。 そして最後にシート4にAさんBさんCさん全てのデータを同じフォーマットで統合したいのです。 しかしA、B、Cさんはそれぞれ随時(毎日)更新しているので、それぞれが自分のシートに入力するだけで自動的にシート4も入力(更新)されていくようにしたいのです。簡単そうだと思い色々調べてみたのですがうまくいきませんでした。最終的にコピ&ペ-ストすればいいだけなのかもしれませんが、もし可能ならと思いまして。 説明が下手で申し訳ありません。 どなたか詳しい人教えてください。

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.8

>やっぱりマクロですかね チョッと作ってみました。ThisWorkBookに貼り付ければ動きます。(Excel2000) しかし完全な粗悪品です。質問に書かれている機能は完全に満たしていますが、Sheet1~3に (1)訂正ができない (2)消去ができない (3)挿入ができない (4)削除ができない (5)他にコピー操作ができない のが欠陥です。 『訂正』については、もう数行追加すれば可能です。 『消去』、『コピー』についてもなんとかなりそうですが、かなり長くなるでしょう。 しかし、行の『挿入』特に『削除』もできるようにするには・・・・もしできても不安定で、余り効果が見込めないような気がしますね。(他の回答者に期待しましょう) 入力者に操作制限を押し付けたくないし、多分、Accessあたりで作り直すと思います。 ↓ここから Const ct = 3 '項目数をセットする Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)   If Target.Cells.Count <> 1 Then Exit Sub '単一セルに入力のみ以下で処理する   Dim rw123 As Long 'シート1、2、3の入力行   Dim rw4 As Long 'シート4の出力行   With Sh     If .Name = "Sheet1" Or .Name = "Sheet2" Or .Name = "Sheet3" Then       If Target.Column = ct Then '最後の項目に入力したら更新する         Application.EnableEvents = False 'Chengeイベントを止める         rw123 = Target.Row '入力行         With Worksheets("Sheet4")           rw4 = .Range("C65536").End(xlUp).Row + 1           .Range(.Cells(rw4, 1), .Cells(rw4, ct)) = _               Sh.Range(Sh.Cells(rw123, 1), Sh.Cells(rw123, ct)).Value         End With         Application.EnableEvents = True 'Chengeイベントが起きるようにする       End If     End If   End With End Sub ↑ここまで >ちょっと今回はexcelにこだわってるんですよ Excelで対応するとしたら、Sheet1~3に入力した時、入力時刻(そのデータを最初に入力した時分秒)を自動的にセットするようにしておき、統合したデータを見たい時にSheet1~3を1つのシートにして入力時の時刻でソートするようなマクロを作ると思います。 ご参考に。

kemu
質問者

お礼

どうもありがとうございます これを参考に自分で勉強してがんばってみます。 またよろしくお願いします

その他の回答 (8)

noname#6451
noname#6451
回答No.9

質問にたいしての答えではないのですが 逆の考えの方が簡単に作れそうな気がするのですが 「シート4に入力して、シート1、2、3に振り分ける」ってかんじにしたら 簡単に解決しそうな気がするんですけど 参考にならなかったらごめんなさい

kemu
質問者

お礼

ありがとうございました

  • i-harada
  • ベストアンサー率22% (56/252)
回答No.7

i-haradaです。 EXCELにこだわられているようですが、「データベースソフト」でされたらどうでしょうか、質問の答えではないかもしれませんが。 腰を折ってしまいました。m(_ _)m ごめんなさい

kemu
質問者

お礼

すいません ちょっと今回はexcelにこだわってるんですよ

noname#1489
noname#1489
回答No.6

行単位での参照は、No.#2のkapakapaさんが書いておられるように、リンク貼り付けでまとめてできますが、 入力順に格納するというのは、Visual Basic Editorでマクロを組むしかないかと・・・。 ただ、1ヶ月なら1ヶ月まとめて、それに近い形で表示するなら、 行の指定を絶対指定にして、『日付』で並べ替えるという方法もあるかと思います。 なお、入力されるデータが数値ではないということですので、 =if('シート1'!A1="","",'シート1'!A1) という条件式にした方がよいかと思います。(No.#1の参照式では、入力されていないと、0が表示されてしまいます。)

kemu
質問者

お礼

ありがとうございます。 やっぱりマクロですかね 勉強したほうがいいですよね

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

こんにちは。maruru01です。 少し補足説明していただきたいのですが。 >でもこれってセル単位でしかできないですよね? >行単位でできませんか? 行単位ってどういうことなのでしょうか? 例えば、シート1のA1~C1の値をシート4に置きたいということですか。 それならシート4に同じ大きさ(この場合はセル3個分)のスペースが必要で、そのセルの1つ1つに参照式を書かなければなりません。 ただし、シート1のA1~C1を範囲選択してコピー → シート4の任意の場所を選択 → 編集メニュー → 形式を選択して貼り付け → リンク貼り付けで一度に参照式を入力できます。もちろん一度入力してしまえば、その後は元のシート1の値が変わるたびにシート4の値も更新されます。 >あとやっぱりできれば集計表には入力された順に格納されていくような方法がいいんですけど無理ですかね? 集計表に、何が入力された時に、どんな順番で格納(更新のこと?)したいのでしょう。 基本的にセル参照というのは、元のセルが変更されて、値が確定した瞬間に参照先も更新されます。したがって、シート4に参照式を入力しておけば、その後はシート1~3で誰かが内容を変更するたびにシート4も自動的に更新されていきます。 実際にどのシートのどのセルで、どうしたいのかを書いてもらえると、答えやすいんですが。 では。

kemu
質問者

お礼

どうもありがとうございます 補足させて頂きます

kemu
質問者

補足

具体的に説明させていただきます。質問にも書きましたが例えば項目が(1)名前(2)日付(3)訪問先(4)交通手段だったとします。まずAさんがシート1のセルA1、B1、C1、D1にA、10/4、新橋、電車と入力したとします。次にBさんがシート2のA1、B1、C1、D1にB、10/4、池袋、タクシーと入力したとします。そしてその後Cさんがシート3のA1、B1、C1、D1にC、10/5、横浜、バスと入力したとします。この時点でシート4のA1、B1、C1、D1にA、10/4、新橋、電車;A2、B2、C2、D2にB、10/4、池袋、タクシー;A3、B3、C3、D3にC、10/5、横浜、バスとなるようにしたいのです。そしてこの後もA、B、Cがランダムに入力していっても、入力順にシート4も更新させていきたいんですけど。まだわかりにくいかもしれませんがお願いします。

noname#1489
noname#1489
回答No.4

No.#1のRIO-Freakです。 入力されるセルがわかっていれば、あらかじめ式を入力しておいても、参照するシートに入力や変更があれば、結果が反映されます。

kemu
質問者

お礼

すいません。別にあとから入力しても反映されるんですよね。勘違いしてました。でもこれってセル単位でしかできないですよね?行単位でできませんか?あとやっぱりできれば集計表には入力された順に格納されていくような方法がいいんですけど無理ですかね?

  • kapakapa
  • ベストアンサー率22% (31/139)
回答No.3

あっ、先ほど回答したkapakapa(2番目)ですが、chttp://excel.internet.ne.jp/ サイトの右メニューの シート参照、ブック参照というところです。 説明不足でした。すみません。

kemu
質問者

お礼

ご親切にありがとうございます でもやっぱりやりたいことと少し違うみたいです。 すいません

  • kapakapa
  • ベストアンサー率22% (31/139)
回答No.2

セル参照の説明が下記のサイトに載っていますので、参考になれば・・・ ではでは。

参考URL:
chttp://excel.internet.ne.jp/
noname#1489
noname#1489
回答No.1

各シートの式や値を参照する時は、例えば、 ='シート1'!A1 というように半角の『'』と『!』をつけて表します。(この例では、シート1のセルA1の値が参照されます。)

kemu
質問者

お礼

早速の回答ありがとうございます でもこれって集計する表のセルに、参照するデータのある場所を指定すると言うことですよね。 この方法はデータ入力が済んだものに対して行うと言うことですよね?そうではなくてあらかじめ設定しておいて、シート1等に入力すると自動でシート4に書き込まれるようにしたいのですが。わかっていなかったらすいません

kemu
質問者

補足

すいません。別にあとから入力しても反映されるんですよね。勘違いしてました。でもこれってセル単位でしかできないですよね?行単位でできませんか?あとやっぱりできれば集計表には入力された順に格納されていくような方法がいいんですけど無理ですかね?