• ベストアンサー

エクセル:このような「予定表」を作りたいのです。

よろしくお願いします。 ◆シート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の作成するための「ヒント」がほしいのです。関数を主体に作成いたしたく、四苦八苦したのですが、どうもうまくできません。ご指導をよろしくお願いいたします。

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

  • ベストアンサー
  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.4

#2です。 (1)ですがプログラム中に Debug.Print "文字列" を入れると、実行時イミディエイトウィンドウに"文字列"が 表示されます。つまり Debug.Print Now() をプログラム中に入れることによりDebug.Printが実行された時間が表示 されることになります。 (2)ですがちょっとイメージがわきませんが。 プログラムの先頭に Application.ScreenUpdating = False 終了前に Application.ScreenUpdating = True を入れてみてください。 画面を更新しないようにすることで計算式を空白にしなくても 必要な値が取得できるのでは?

yastaro
質問者

お礼

なんどもありがとうございました。 VBAの中身をもう少し勉強してみます。 スクリーンの動きを消すと早くなることもありがとうございます。

その他の回答 (3)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.3

#2です。 VBAでデータ入力→更新→結果までできているのならたいしたものです。 そのプログラムの性能改善する方法を考えたらどうでしょう。 例えば処理ごとにdebug.print等で時間を出して遅い個所を特定するとか。

yastaro
質問者

補足

たびたび、ありがとうございます。 自分で勉強しなさいとお叱りをいただきそうですが、もしよろしければ下記の件、教えてください。 (1) 「処理ごとにdebug.print等で時間を出して遅い個所を特定する」性能改善の具体的な方法についてヒントだけでも教えていただけませんでしょうか?素人とはいえ、「debug.print等」言葉の意味さえわかりません。よろしくお願いいたします。 (2) 質問で例示した予定表で、多量の計算式の不要なところを空白に置き換える作業を(不要なところの計算式を空白にすると必要な文字が右横の関数に邪魔されないで、最後まで表示できるための)マクロで組んでいますが、そこに時間をかなり要しているのは目視でわかります。例えばそのようなところを短縮化できる工夫はあるのでしょうか? 以上、もうひとたびお付き合い願えますならばよろしくお願いいたします。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

関数主体ではかなり無理があるような気がします。 VBAで考えてみてはどうでしょう?

yastaro
質問者

お礼

アドバイスありがとうございます。そうですよね~。 やっぱり、VBAですよね。私がVBA初心者でマクロを記録させたものを修正する程度の技術しかありません。実はVBAで結果を出せるものは作成したのですが、他の諸表作成も含めて30分もかかるものになってしまったのです。一生懸命考えてやった結果です。しかし、データ入力→更新→結果(諸表作成)に30分もかかるようでは使いものにならないと(システム利用担当者)に叱られてしまいました。 愚痴みたいになってしまいました。すみません。^^; 取り急ぎお礼まで。ありがとうございます。

noname#22222
noname#22222
回答No.1

「予定表」の仕様の問題ではないでしょうか? A案:職員別に[職員別予定表]を作成する。 B案:単一の[職員別予定表]を作成する。 後者は、前者に比べて1/職員総数の領域しか使用しません。 この場合、シート2は、[職員別予定表]のレイアウトに過ぎません。 職員名リスト列を用意し、それが選択されたら現職員名欄に代入するようにしたら、大幅な変更なく完成できるのではないでしょうか? ※まず、A案かB案かの選択が先と思います。

yastaro
質問者

お礼

アドバイスありがとうございます。私もおっしゃるとおりかと思います。 ただ、私の今の業務が多種の「簡易システム作成」が使命で、「このようなものを作りなさい」という指令がはじめにありきなのです。 こちらがこのようなものはどうですかという提案ができない状況の中(私が出向先で業務をしているという事情もあり)にあります。上記のものも他にも複雑な諸表作成が統合されてあるシステムづくりで省略しつつ、ほんの一部を抜粋しました。考え方については参考にさせていただきたいと思います。ありがとうございます。

関連するQ&A

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • エクセルの同じ名前をカウントする方法

    エクセルの同じ名前をカウントする方法 初歩的な質問ですみません。 山田太郎 田中一郎 鈴木三郎 高橋次郎 鈴木三郎 高橋次郎 鈴木三郎 A1のセルにこういった状態で名前が入力されていた場合に 山田太郎 1 田中一郎 1 鈴木三郎 3 高橋次郎 2 となるように同じ名前がいくつあるかをカウントさせ上記のように表示させたいのですが、 どうしたらいいのでしょうか? (同じシートでも、別のシートでもどちらでも構いません) 至急お答えいただけるとありがたいです。 よろしくお願いします。 

  • FacebookにもIPのようなものがあるの?

    自分はFacebookをやったことがなく、知識がないので教えていただきたいのですが… Eメールや、ブログにコメントしたりすると、相手にこちらのIPアドレスなどが分かってしまいますよね? (Facebookには、足跡機能は無いとは聞いたのですが…) 例えば、自分の名前が「「山田太郎」だとします。 でも、まだFacebookがうまく使えないので、「鈴木一郎と」いう仮のアカウントを作って練習(?)するとします。 (Fbは本名がルールなのは知っていますが、下手な失敗をすると恥ずかしいのでちょっと練習したい…) で、鈴木一郎が、面識はない「佐藤次郎」と友達になって、佐藤次郎のところに訪ねているとします。 そして、後になって、本名の山田太郎として交信を始めたとき、 佐藤次郎は「鈴木一郎と山田太郎が同一人物」だと分かる術はあるのでしょうか? つまり、佐藤次郎には二人のIPアドレスのようなもの(?)が判って、「あれ?この二人同じじゃん!」って分かってしまうのでしょうか? 教えてください。

  • アクセス関数を使って、重複チェック

    アクセス2003を使っています。 ある講座の受講者のデータが入っているデータベースを作ろうと考えています。 その講座には受講者が実際に重複して受講する人がいます。 重複して受講しているかどうかを、「選択クエリ上の関数」を使って調べたいです。 具体的には  氏名  受講月 山田太郎 2009/1 佐藤一郎 2009/2 山田次郎 2009/3 佐藤一郎 2009/4 というデータベースがあり、佐藤一郎が重複しています。(受講月は重複していません) これをクエリを使って、  氏名  受講月 山田太郎 2009/1 佐藤一郎 2009/2 重複 山田次郎 2009/3 佐藤一郎 2009/4 重複 というクエリを作りたいです。 どうすれば良いでしょうか?

  • Accessで一致データを抜いて項目をずらす方法

    Access2000を使用して、テーブル1のフィールド2~5で、テーブル2と一致したフィールドを抜いて項目をシフトさせたいのですが、どのような方法があるのでしょうか。 <元テーブル>    フィールド→ 氏名, 名1, 名2, 名3, 名4 ・テーブル1の項目 山田,花子,次郎,三郎,四郎           鈴木,五郎,六郎,七朗,和子           佐藤,和子,一郎,太郎,四郎 ・テーブル2の項目 山田,花子           鈴木,七朗           鈴木,和子          佐藤,一郎           佐藤,四郎           佐藤,和子 <変換後テーブル>テーブル1を基準として   フィールド→ 氏名, 名1, 名2, 名3, 名4           山田,次郎,三郎,四郎,null           鈴木,五郎,六郎,null,null           佐藤,太郎,null,null,null 分りずらい説明で申し訳ありませんが、宜しくお願いします。

  • エクセルVBAの質問です

    sample.xlsがあり内容は下記のように A列に名前、B列に数字が入り、行数は一定でありません 田中一郎 3 鈴木健一 5 佐藤太郎 8 田中一郎 5 田中一郎 2 佐藤太郎 7 鈴木健一 3 佐藤太郎 9 鈴木健一 54 佐藤太郎 8 田中一郎 9 このエクセルシートにコマンドボタンを付け、VBAでコマンドボタンを押した場合 指定したエクセルファイル”kekka.xls”に 田中一郎 19 鈴木健一 62 佐藤太郎 32 と言うように、名前別でその氏名の横の数字の合計を表示させたいと考えています。 何卒お知恵をお貸しください、お願いします。

  • エクセル キーとなる項目で判別し重複データ行を削除したい

    エクセル2002を使用しています。 差込印刷用のデータとして整える方法を教えていただきたいと存じます。 具体的には、子供ごとのレコードデータから、親宛の封筒宛名ラベルを作成したいと考えていて、2人兄弟や3人兄弟の場合でも封筒は1通なので、 キーとなる項目を目安に、不必要な行を削除すればできると考えましたが、具体的な方法がわからないでいます。 現在のデータは、以下のものです。(簡潔にするために列を部分的に省いています) 世帯コード   親の氏名   住所           子の氏名 0011223    鈴木 一郎  東京都千代田区一丁目   鈴木 次郎 0011223    鈴木 一郎  東京都千代田区一丁目   鈴木 三郎 0011223    鈴木 一郎  東京都千代田区一丁目   鈴木 四郎 0011556    山田 花子  埼玉県川口市中央     山田 洋子 0011556    山田 花子  埼玉県川口市中央     山田 和夫 0153355    佐藤 次郎  千葉県船橋市海浜     佐藤 みく 0002333    鈴木 一郎  神奈川県川崎区高津区   鈴木 空 0002333    鈴木 一郎  神奈川県川崎区高津区   鈴木 陸 これを、次のように「世帯コード」で判別して世帯ごとの最初の行だけを抜き出したり、2行目以降を削除したりできれば、差込印刷用のデータとして利用できると思います。 世帯コード   親の氏名   住所           子の氏名 0011223    鈴木 一郎  東京都千代田区一丁目   鈴木 次郎 0011556    山田 花子  埼玉県川口市中央     山田 洋子 0153355    佐藤 次郎  千葉県船橋市海浜     佐藤 みく 0002333    鈴木 一郎  神奈川県川崎区高津区   鈴木 空 (世帯ごとに一行ずつになっています。親の氏名のうち、鈴木 一郎 さんは、同姓同名の方です。世帯コードが違うので区分できます。) エクセルの機能でこのようにできる方法はあるでしょうか? もしくは別の方法でも、宛名ラベルを親宛に一枚印刷できる方法があるでしょうか? お願いいたします。 データ用のシートですので、行や列の挿入や別シートの利用などはすべてできますので、よろしくお願いいたします。

  • Excelのドロップダウンリストについて

    Sheet1において, A列 B列 1 田中太郎 2 佐藤次郎 3 山田三郎 のようなリストを作成してあるとします。 Sheet2において, A1のセルに1を入力すると,B1のセルに田中太郎と表示される様,B1にVLOOKUP($A1,Sheet1!$A$1:$B$3,2,0)と入力しています。 この時,A1をドロップダウンリストで入力する場合,リストの表示と入力値を変更するようなことはできるのでしょうか。 すなわち,リストには, 田中太郎 佐藤次郎 山田三郎 と表示され, 田中太郎 を選ぶとA1には1が入力され,B1にはVLOOKUP関数の効果として田中太郎と表示されるといった具合です。 当方,HTMLは理解しておりますので,HTMLで意図をご説明させていただければと思います。 HTMLでプルダウンボックスを使う場合の入力として, <SELECT name="ボックス名"> <OPTION value="1">田中太郎</OPTION> <OPTION value="2">佐藤次郎</OPTION> <OPTION value="3">山田三郎</OPTION> </SELECT> ということになります。 これと同じようなことがエクセルで可能なのかどうかという質問でございます。

  • エクセルでの顧客数のカウント

    エクセルで下記のような表を作っています。 A   B       C 日付 顧客名   売上 10/1 山田太郎  1000 10/5 中村次郎  2000 10/10 鈴木三郎  1000 10/22 中村次郎  2000 10/31 山田太郎  1000 この時に、10月1か月の顧客数をカウントしたいのです。 上記であれば、山田太郎、中村次郎、鈴木三郎の3人ということになるはずです。 どのようにすればできますでしょうか。

  • エクセルVBA:表の内容を担当者別に振り分けたい

    よろしくお願いいたします。 VBA初心者です。よろしくご指導をお願いいたします。 安易に教えてgooで質問することにお叱りをいただくこともあり、 VBAの本も数冊買って勉強をはじめ、格闘していますが、手に負えません。どうか助けてください。   A     B   C   D   E    F   g  担当者  日付 商品 規格 数量  単価 備考 1山田太郎  ○  △  ■   ◎  ◇   ▼ 2鈴木次郎  ■  ○  ▼   ■  ○   ○ 3佐藤三郎  △  ■  ○   ◎  ◎   ■ 4山田太郎  ▼  ■  ◎   ■  ○   ▼ 5山田太郎  ◇  ○  ◎   ◇  ◆   ◎ 6鈴木次郎  ◆  ◎  ◇   ◎  ◇   ◇ というような入力シートの表があり、レコードは1000以上、下にたくさん続きます。 ○や▼には実際には数値や商品名、短文などが入ります。 担当者は、50名、そこで「山田太郎」をはじめ、担当者氏名の名前の50のワークシートを作成しています。 そこで、次のようなVBAを書きたいのです。 VBAを実行すると、 シート別に入力表のデータが振り分けられて、 「山田太郎」に  A  B   C   D   E    F   g 1  日付 商品 規格 数量  単価  備考 2  ○  △  ■   ◎  ◇    ▼ 3  ▼  ■  ◎   ■  ○    ▼ 4  ◇  ○  ◎   ◇  ◆    ◎ と入力シートに入力されたデータが50名のシートに振り分けられるものです。 どうか、よろしくご指導お願いいたします。

専門家に質問してみよう