- 締切済み
同じ行・列で連続データを入力したい
エクセルのブックで タイムカードを基にパートさんの時間を計算しようとしています。 A列にパートさんの氏名があります。 B列以降にパートさんの出退時間を入力するのですが (「B1」に出勤時間を「C1」に退社時間、「D1」に実労時間が計算されるようにしています) ここで悩んでいるのですが 「B1]と「C1]は固定したまま、このセルに時間を連続入力してゆき(直前に入力したデータを上書きしてゆきたい) 「D1]には積算時間が表示されるようにしたいのですが どのようにすれば良いのでしょうか データ入力規則でもなし・・・ または、集計機能を使うのか見当がつきません それと 入力していく時間データは別のセルまたは、別シートに履歴として残したいのですが。。。 これってやはりマクロでないと駄目でしょうか winXP エクセル2003です よろしくお願い致します
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- papayuka
- ベストアンサー率45% (1388/3066)
#1です。 > VBAは苦手なので助けてください VBAが苦手では諦めた方が良いと思います。 いまいち仕様が掴めませんが、記録マクロをちょっと手直し出来るくらいでは出来ないように思えます。 例えば、下記をSheet1のシートモジュールに転記するとSheet1のC1を書換えるたびに、1行目をSheet2に転記していきます。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Cells(1, 1).Address = "$C$1" Then Target.Cells(1, 1).EntireRow.Copy _ Worksheets("Sheet2").Range("D65536").End(xlUp).Offset(1, 0).EntireRow End If End Sub しかし、これでは入力ミスだろうが何だろうが転記してしまうので使い物にならないでしょう。 また、累積計算表示させる方法も考えなければなりません。 普通に1ヶ月分の勤怠カードのようなシートを作り、日々の時間入力は各セルに入れて最下段に集計行を準備すれば事足りるのでは無いでしょうか?
えーと、その日ごとに出勤時刻・退社時刻を記録し、たとえば今日の分だけ別シートに表示させて、実労時間も計算したいという事で良いでしょうか。 VLOOKUPを使ってできないでしょうか。 「元データ」というシートをつくり、A列に名前、B列に日付(試してみるなら今日の日付を入れてください)、C列に出勤時刻、D列に退社時刻を入力していくとします。 そして別に「表示データ」というシートをつくり、たとえばB1に =VLOOKUP(TODAY(),元データ!B1:D7,2,0) と入れると、とりあえず今日の出勤時刻が表示されますよね。 (ここで「表示データ」のセルの書式をきちんと時刻に 設定しないとヘンな数字が出るかも) で、C1に =VLOOKUP(TODAY(),元データ!B1:D7,3,0) と入れて、D1には =C1-B1 と入れれば・・・。
お礼
ありがとうございます マクロでデータを転記できるようにしたいので 勉強します ありがとうございました。
- papayuka
- ベストアンサー率45% (1388/3066)
> 入力していく時間データは別のセルまたは、別シートに履歴として残したいのですが データ構造を含め、良く意味が理解出来てませんが、、、 入力用シートを使って勤怠時間を入力し、データは別シートに蓄積したいって事? 入力データを別セルに蓄積していくという時点で、関数では無理で、VBAで組む必要があると思います。 履歴シートに入力して行き、必要に応じて抽出するなり集計するなりする方が遥かに容易だと思いますが、、、
補足
>入力用シートを使って勤怠時間を入力し、データは別シートに蓄積したいって事? はいそうです。 はやりVBAで組まなければなりませんか。。。 VBAは苦手なので助けてください それと >履歴シートに入力して行き、必要に応じて抽出するなり集計するなりする方が遥かに容易だと思いますが そうなんですが 一つのセル範囲を使ってデータを入力しそれを 別に蓄積する方法を試してみたいのです。
お礼
ありがとうございました VBAをもう少し勉強してみます。 これだけの短時間に構文を書けるなんてすごいですね また、新たに質問があれば投稿しますので よろしく願いいたします