• ベストアンサー

ExcelのVBAに明るい方・・・

Excelの、Sheet1 に 1日目,鈴木くん,点数,・・・ 2日目,佐藤くん,点数,・・・ 2日目,山田くん,点数,・・・ 3日目,佐藤くん,点数,・・・ 3日目,鈴木くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ という、元ダネの一覧表があって、 このデータを日々追加入力していくごとに、自動的に、 Sheet2 には、鈴木くんのみの一覧表のデータ 1日目,鈴木くん,点数,・・・ 3日目,鈴木くん,点数,・・・ ・・・ Sheet3 には、佐藤くんのみの一覧表のデータ 2日目,佐藤くん,点数,・・・ 3日目,佐藤くん,点数,・・・ ・・・ Sheet4 には、山田くんのみの一覧表のデータ 2日目,山田くん,点数,・・・ 4日目,山田くん,点数,・・・ ・・・ が、自動的に追加入力されるVBAの記述って、 どうすればいいんでしょうか? VBAに明るい方、どうかよろしくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

ニーズとしては、必要性を良く共感できます。 ご質問者は簡単な問題と思ったかどうか、判りませんが 検討して決めるべきことがあると思います。 1.例えば鈴木さんのシート(個人別シート)は何で判別するのか (1)各シートの決まったセルに「鈴木」をいれる (2)シート名を「鈴木XXX」にする (3)対応表を作る (4)毎回作り直し のどれにするか 2.プログラムはすべてキッカケがないと実行されません。それを何に求めるか。 「追加入力してゆくごとに」との兼ね合いが難しい。 (1)シートやフォームに貼りつけたボタン (2)エクセルシートのイベント (3)BookのCloseイベント (4)タイマーのようなもの(自動バックアップのようなイメージ) (1)は確実でコードが作り易いが、ボタンを押さないと実行されないので、シート1と個人シートの整合性で問題があるかも知れない。個人シートがどれくらいのタイミングで頻繁に利用されるのかと関係する。 (2)はイメージではピッタリなのだが、VBAレベルでは、どうもピッタリのものがなく、入力処理時にパソコンに負担がかかり、入力時にレスポンスが時間的間延びするかもしれない。 3.毎回個人シートに振り分けをやるとして (1)毎回シート1を全行振り分けるか (2)シート1の振り分けてない行のみを振り分けるか (2)の場合シート1の各行と個人別シートに振り分け済みかどうかのサインが必要かと思う。 4.シート1(全体表)を行削除したとき、個人シートの該当行を削除するのか。 全体シート・個人別シートは行削除禁止か。 ○いろいろ考えると、シート1を原本とし「テーブル」として、必要の都度個人表を「クエリ」で作成してみる(使う)アクセスなどの方式が、安定していて良くはないでしょか(アクセスを使うべし)。 ○入力と同時に個人シートにも書きこむだけにするのが 簡単で良いかと思う。 ○上記の点1-4を決めていただいても、具体的コードは、相当長く、熟達のスキルが必要で、忙しい人も多い中で、答えを上げ難いように予想する。 まあ、小システムを作るに等しい作業で、VBAのコード を上げてくださる奇特な方が現れると良いですが。 不完全な形では関数を使っても出来そうですが、個人シートが関数だらけになり、個人シートで他の関数を使えず お勧めできません。

noname#6938
質問者

お礼

ご回答ありがとうございます。 お礼が後れて申し訳ございません。 最初は、WorkSheet_Changeで、できそうだと 簡単に考えていたのですが、 入力の度に、原本をソート個人シートを全行書き換えることになると、 ご指摘くださった、 >入力処理時にパソコンに負担がかかり、 >入力時にレスポンスが時間的間延びするかもしれない ・・・んじゃないか?と心配になってしまいました。 いろいろ方法がありそうでも、 課題もいろいろありそうですね。 でも、やはり自分の言葉以外で、 考えを聞くことは大事で、 おかげで、頭の中が少し整理がつきました。 ソースをカキコしてくれる暇な人はさすがにいないかな(^^; もう少し、考えてみます。 とにかくありがとうございました。 締め切りは、もう少しあとでしますね。

その他の回答 (1)

  • atokih
  • ベストアンサー率40% (12/30)
回答No.1

追加分だけを反映するとなると面倒なので、 毎回シート1のデータを全部検索して、シート2以降のデータを全部作り直すという構造のほうが簡単なんじゃないんでしょうか。

noname#6938
質問者

お礼

お礼が後れて申し訳ございません。 たしかに、そうするのが見やすそうですね。 ただ、けっこう、行数がありそうなんですよね。 ブックやシートのアクティヴの度の更新よりも、 できれば原本のデータ入力段階で、 個人データも書き換えたいのですが、 行が多くなると、速度とか大丈夫なのかなぁと思って、 どうしたほうが一番いいのか、分からなくなってしまいました。 ご回答ありがとうございます。 締め切りは、もう少しあとでしますね。