- ベストアンサー
エクセル:このような「予定表」を作りたいのです。
よろしくお願いします。 ◆シート1に5分単位で次のような入力を行います。 職員氏名 顧客氏名 訪問予定時間 終了時間 備考 ------------------------ 山田太郎 鈴木一郎 7:05 8:35 ×× 海川三郎 ○○ ○:○○ ○:○○ 山田太郎 佐藤次郎 9:00 10:15 ▲▲ 川波五郎 ○○ ○:○○ ○:○○ 山田太郎 田中六郎 13:00 14:25 □□ ◆シート2に関数でつぎのような表示を出したいのです 7:00 7:30 8:00 8:30 9:00 9:30 ・・・ ------------------------ 山田太郎 7:05~8:35 9:00~10:15・・・ 鈴木一郎 佐藤次郎 ・・・ ×× ▲▲ ・・・ ------------------------ ◆シート2の時間もセルの列を5分単位で区切ってセル幅を短くし、該当時間に条件付書式で色をつけるイメージです。 ◆職員数数十名、顧客数数百名で曜日別に作成するため、重くなるのは仕方ありませんが、シート2の作成するための「ヒント」がほしいのです。関数を主体に作成いたしたく、四苦八苦したのですが、どうもうまくできません。ご指導をよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 (1)ですがプログラム中に Debug.Print "文字列" を入れると、実行時イミディエイトウィンドウに"文字列"が 表示されます。つまり Debug.Print Now() をプログラム中に入れることによりDebug.Printが実行された時間が表示 されることになります。 (2)ですがちょっとイメージがわきませんが。 プログラムの先頭に Application.ScreenUpdating = False 終了前に Application.ScreenUpdating = True を入れてみてください。 画面を更新しないようにすることで計算式を空白にしなくても 必要な値が取得できるのでは?
その他の回答 (3)
- o_chi_chi
- ベストアンサー率45% (131/287)
#2です。 VBAでデータ入力→更新→結果までできているのならたいしたものです。 そのプログラムの性能改善する方法を考えたらどうでしょう。 例えば処理ごとにdebug.print等で時間を出して遅い個所を特定するとか。
補足
たびたび、ありがとうございます。 自分で勉強しなさいとお叱りをいただきそうですが、もしよろしければ下記の件、教えてください。 (1) 「処理ごとにdebug.print等で時間を出して遅い個所を特定する」性能改善の具体的な方法についてヒントだけでも教えていただけませんでしょうか?素人とはいえ、「debug.print等」言葉の意味さえわかりません。よろしくお願いいたします。 (2) 質問で例示した予定表で、多量の計算式の不要なところを空白に置き換える作業を(不要なところの計算式を空白にすると必要な文字が右横の関数に邪魔されないで、最後まで表示できるための)マクロで組んでいますが、そこに時間をかなり要しているのは目視でわかります。例えばそのようなところを短縮化できる工夫はあるのでしょうか? 以上、もうひとたびお付き合い願えますならばよろしくお願いいたします。
- o_chi_chi
- ベストアンサー率45% (131/287)
関数主体ではかなり無理があるような気がします。 VBAで考えてみてはどうでしょう?
お礼
アドバイスありがとうございます。そうですよね~。 やっぱり、VBAですよね。私がVBA初心者でマクロを記録させたものを修正する程度の技術しかありません。実はVBAで結果を出せるものは作成したのですが、他の諸表作成も含めて30分もかかるものになってしまったのです。一生懸命考えてやった結果です。しかし、データ入力→更新→結果(諸表作成)に30分もかかるようでは使いものにならないと(システム利用担当者)に叱られてしまいました。 愚痴みたいになってしまいました。すみません。^^; 取り急ぎお礼まで。ありがとうございます。
「予定表」の仕様の問題ではないでしょうか? A案:職員別に[職員別予定表]を作成する。 B案:単一の[職員別予定表]を作成する。 後者は、前者に比べて1/職員総数の領域しか使用しません。 この場合、シート2は、[職員別予定表]のレイアウトに過ぎません。 職員名リスト列を用意し、それが選択されたら現職員名欄に代入するようにしたら、大幅な変更なく完成できるのではないでしょうか? ※まず、A案かB案かの選択が先と思います。
お礼
アドバイスありがとうございます。私もおっしゃるとおりかと思います。 ただ、私の今の業務が多種の「簡易システム作成」が使命で、「このようなものを作りなさい」という指令がはじめにありきなのです。 こちらがこのようなものはどうですかという提案ができない状況の中(私が出向先で業務をしているという事情もあり)にあります。上記のものも他にも複雑な諸表作成が統合されてあるシステムづくりで省略しつつ、ほんの一部を抜粋しました。考え方については参考にさせていただきたいと思います。ありがとうございます。
お礼
なんどもありがとうございました。 VBAの中身をもう少し勉強してみます。 スクリーンの動きを消すと早くなることもありがとうございます。