• ベストアンサー

EXCELで日報作成

TTakの回答

  • TTak
  • ベストアンサー率52% (206/389)
回答No.1

要するにSheet2に、作業名・日付・時間を入力した時点で、Sheet1の作業名(行)と日付(列)をクロスで検索して一致したセルに時間が自動入力されるようにしたいと察しました。VBAを使った方法です。 Sheet2のコードモジュールに貼り付けて試行してください。 '---ここから Dim myRecord As Long Dim myColmun As Integer Private Sub Worksheet_Change(ByVal Target As Range) 'C列セルに変更があった場合のイベントマクロ If Left(Target.Address, 2) = "$C" Then '変更のあった行数の取得 myRecord = Range(Target.Address).Row '変更のあった列数の取得 myColmun = Range(Target.Address).Column 'サブルーチン(データ転送) Call Dat_Input End If End Sub Sub Dat_Input() 'データ転送 Dim I As Integer Dim J As Integer '作業名が一致するまで検索 For I = 1 To Range(Sheets("Sheet1").Cells(Rows.Count, 1) _ .End(xlUp).Address).Row If Cells(myRecord, 2).Value = Sheets("Sheet1") _ .Cells(I, 1).Value Then Exit For Next I '日付が一致するまで検索 For J = 1 To Range(Sheets("Sheet1").Cells(1, Columns.Count) _ .End(xlToLeft).Address).Column If Cells(myRecord, 1).Value = Sheets("Sheet1") _ .Cells(1, J).Value Then Exit For Next J '一致するセルに書き込む Sheets("Sheet1").Cells(I, J).Value = Cells(myRecord, myColmun) End Sub '---ここまで

usajun
質問者

お礼

ありがとうございます! とりあえずできました!! 実はsheet2で、同じ日に同じ作業名が複数入ることもあるんです。 例:2行目に、8/1 あ 1:00   3行目に、8/1 あ 2:00 そういう場合、sheet1の8/1の「あ」のところに「3:00」と 表示されるようにしたいんですが、これはどうしたらいいんでしょう? 今のままだと最後に入れた「2:00」だけの表示になってしまいます。 よろしければまた教えてください・・・。

関連するQ&A

  • エクセル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に詳しくないため、どこからどう手をつけたらいいものかわかりません。 お詳しい方、お知恵をいただけましたらと思います。 不足情報等ございましたらご指摘いただけましたら補足をさせていただきますので どうぞよろしくお願いいたします。

  • エクセルのシート名を、シート1に作成した新旧一覧表に対応させる形で、複数シート一括で変更するには?

    エクセルのシート名の変更について教えてください。 シート1のA列に、現在のブックのシート名が、 シート1のB列には、変更したいシート名が 対応するように入力されています。 シート数は50~200程度で、つど変わります。 例     A列    B列 1行目:りんご   赤色  2行目:ばなな   黄色 3行目:メロン   緑色     ・     ・     ・     ・     ・     ・ ※この場合、「りんご」は「赤色」に、「ばなな」は「黄色」に、 「メロン」は「緑色」に、それぞれシート名を変換したい。 今は、手作業でひとつずつシート名を変換しており、 かなりの手間で困っています。 一覧表を作成するまでは手作業でいいのですが、 何とかして、シート名の変更を、この一覧表を参照して できないでしょうか? 過去の質問をいろいろと見たのですが、 該当するものが見つけられず、VBAも初心者のため、 途方にくれています。 ぜひともご教授ください。

  • EXCEL VBAで日報作成したい

    お世話になります。 EXCEL VBAの勉強をかねて日報を作成しようと思っています。 添付図にあるような簡単な日報ですが、VBAでやりたいことは2つあります。 1.行追加 各行の隣にある「行追加」ボタンを押したらその行を下に追加したいのです。 2.カレンダー作成 「カレンダー作成」というボタンを押したらA5に入っている月を参照して、添付図のようなA列が月、B列が日、C列が曜日、D列が開始時間、E列が終了時間、F列が作業、G列に行追加ボタンが自動で該当月のカレンダーに自動作成できれば最高です。 上記1.2を実現するためのロジックについてどなたかお知恵をお借りできませんでしょうか? よろしくお願い致します。 EXCEL2013

  • Excel 集計表の作成

    Excelの集計表の作成について教えてください。 Accessから出力したデータ(日別、作業別、その件数)の一覧表を作りたいと思っています。 今のところ、このような状態になっています ↓↓      A    B    C     1   日付  作業名  件数 2  1日   作業A     100 3  1日   作業B    100 4   2日  作業A   100      コレをこのような状態に変えたいんです ↓↓     A      B       C      D 1  日付   作業A  作業B  作業D 2 1日    100   100    50   3 2日    100   100    50 (行→日にち  列→作業名) ボタン1つで出来るようにしたいのでマクロ、VBAを使用したいです。 どなたかお知恵を貸していただけないでしょうか。

  • Excelでの日別ガントチャート作成方法作成

    Excel2007を使用してシート1では以下のような月次勤務表を作成しております。このシート1の月次の勤務表は縦軸に30人ほどの氏名、横軸に日にちを展開しております。この表をもとに、8/1に勤務するものをピックアップして、シート2でガントチャートを作成したいのですが どなたかご教授いただけないでしょうか? なお、月次勤務表の横軸の日付と曜日は、月が変われば、自動で変わるように作成しております。 月次勤務表例(シート1)      A列   B列  C列      D列   E列    F列    G列・・・・・・・・・AG列 1行目 2012年8月 3行目 No 氏名 種別 1 2 3 4・・・・・・・・・・・・31 4行目           水 木 金 土 5行目 1  A氏   出勤    9:00          11:00 6行目          退社 17:00       16:00 7行目         休憩 0.5 0.25 8行目         実働 7.5 0.00 4.75 0.00 9行目 2       B氏   出勤    9:00    10:00       ・              退社 17:00 15:00       ・            休憩 1.0 0.25 ・            実働 7.00 4.75 0.00 0.00 この月次シートから、別シートに例えば、8/1に勤務するものと、その時間帯をガントチャート形式 で表示するための関数をご教授いただければ幸いです。

  • エクセル関数

    エクセル関数を教えてください。 下記のシフト表のようなものを作成しているのですが、 【Sheet1】    A列    B列  C列   D列 ・・・・  1 氏名    4/8   4/9   4/10・・・・ 2 勤務者名  ●   △    ■ B列以降は連続した日付で 2行目は出勤日に記号を入力します。 記号は仕事種類によって違うので、種類はいろいろあります。 ちなみに、【Sheet1】のひな形は変更不可です。 この表を元に【Sheet2】に勤務者名を入力すると、 最初に出勤した日と、最後に出勤した日を表示させたいのです。 IFやVLOOK関数を使うのかな?と思いいろいろやってみたのですが、 うまくできませんでした。。。 ご協力よろしくお願いします。  

  • エクセルで、2つのセル値(2つの条件)から、別シートの表から該当する値を参照する方法

    シート(1)のA列とB列のセルに入力されている値を元に、 シート(2)の表を参照し、該当する値をシート(1)のC列に 表示させる方法があれば 教えて頂けると助かります。 なおシート(1)のA列は、参照するシート(2)の表の列タイトルに対応し、 シート(1)のB列は、シート(2)の行タイトルに対応するマトリックス表に なっております。 また、この列行タイトルの表記は「1から」または「1から9まで」 という範囲での表示になっています。 (例:シート(1)元データ) No| A列 | B列 | C列 | --------------------------------- 1 | 07  |  22  |  20 | ←C列は、シート(2)表を参照  2 | 18  |  15  |  30 |        3 | 01  |  09  |  05 |       4 | 21  |  03  |  30 |  5 | 30  |  28  |  35 |  (例:シート(2)参照する表) A列\B列 | 1~9| 10~19 | 20~29 | -----------------------------------   01~  | 05  |  10  |  20  |         05~  | 15  |  15  |  20  |           10~  | 20  |  25  |  30  |        15~  | 25  |  30  |  30  |    20~  | 30  |  35  |  35  |  現在、手作業でC列への入力を行っております。 何とか、作業効率を上げたいと思っておりますので、 ご指導下さいます様 宜しくお願い致します。

  • EXCEL VBAで売上日報作成

    下記のような場合どのようなマクロを組めばいいか教えてください。 表(1) 日付 店舗名 売上 仕入値 客数   -------------------------------- 3/1   A   100   10   20 このような表を 表(2)(別のシート) 日付 売上  3/1  10 3/2  12 3/3 100  のように置き換えるのは出来るのですが、 例えば表(1)に3/11のデータをコピペし、シート上に マクロ実行ボタンを作り、そのボタンを押すと 表(2)に必要な部分だけを抽出かつ、日付順に並ばせる 方法を教えてください。 表(1)にデータをコピペし、ボタンを押すだけで表(2)に その日の売上が表示され、月末には一ヶ月の売上の推移を見れるような形をつくりたいのです。LOOK UP関数 などでは、表(1)に3/1の分をコピペするとその日はちゃんと表示されますが、翌日表(1)に3/2分をコピペすると3/1の上に上書きされますよね。なので、3/1の下のセルに3/2分を表示するようなマクロを教えてください。

  • エクセルで作成したいのですが

    エクセルで、 A列に「日付」、 B列に「機械種類」、 C列に「作業数」を手入力して D列に「当日の総作業数」を自動入力するような、 作業工数表を作成したいと思っています。 (具体例) 2/1 A機  1000 2/1 B機   300   2/1 A機  1200 2200 2/2 A機  1200 2/2 B機  3500 2/2 B機 12000  15500 2/2 A機  2000  3200 2/1 B機 1000 1300         以上のような状態にしたいのですが、 D列の「総作業数」を、 自動で集計されるようにするには、どうすればよいでしょうか…。 具体的には、 「A列が同日の日付の場合、B列の機械毎にその「作業数(C列)」を合計し、 同日日付の最後の日の、D列に合計値を記入する。 という形と考えているのですが、 日付は作業を指示する者が追記していくので必ずしも日付順に並んではいない場合での計算が理想ですが、ソート?で並べ替えをして数式が自動になればそれで構いませんが。 アドバイスを頂けると助かります。 よろしくお願いいたします。m(_ _)m

  • エクセル2007で作成したいのですが・・

    作業予定表を作成しています シート1に左から 予定日 機械名 数量 終了日 得意先 色 ・・・等の項目があり 1/1  A機  500   1/3   AAA  黒 1/3  B機  1000  1/5   CCC  青 1/2  A機  300   1/3   ABC  黒 1/1  A機  200   1/2  BBBB  赤 1/2  B機  100   1/4   ABCD 青 という感じで行下にどんどん追記していく予定表データから別シートに 作業予定日と機械名を入力すると数量や・終了日等該当する行の項目データが表示されるようにしたいのですが・・・。 シート2のイメージは以下の感じです 予定日   機械名 1月1日    A機  ↑↑↑  ↑↑↑ ここに抽出したい日時と機械名を入れてエンターを押すと下のように表示されるのがベストです 数量  終了日 得意先  色・・・ 500   1/3    AAA  黒 200   1/2    BBBB 赤 サーバにアップして、各社員が予定表に入力して、状況を閲覧できるようにしたいのです。 シート1では数式でいろんな集計?がしてあるのでフィルタや並び替えは避けたいです。 多くの人間が作業するのでフィルタや並び替え等の操作をすると誤って削除する方が多く困っているのでこの方法が良いかと考えました。 すみませんが御助力ください。他になにか良い案があればご教示頂ければ幸いです。