- 締切済み
Excelでの日計表の作り方を教えてください。
シート1の横A~G 縦は30~40ぐらいの表に毎日数字を入力したら、別シート2の同形式の表に累計されるようなものを作りたいのですがどうやればよいか教えてください。 例えば シート1の A1に 5 を入力 シート2の A1に 5を 表示 続いて シート1の A1に 3 を入力 シート2の A1に 8を 表示 のような表です。 よろしくお願いします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
回答No.7 >他のサイトでVBを使って似たよう事を隣り合わせのセル同士でやる方法を見つけました。 いえ、そういう問題ではないのです。 どの様なVBAにするのかという話ではなく、どの瞬間の値を累計する様にしたいと質問者様が考えておられるのか、という事に関して何も説明がされていない、即ち、質問者様がどの様にしたいのかという条件が不明なため、回答のしようがないのです。 回答No.7を良く読んで下さい。 >これに似た事を複数のセル で行うという事は、その「複数のセル」の内の1つでも入力が行われれば値の累計を行わなければならないという事になりますが、例えばA1、B1、C1の3個のセルの内、A1セルとB1セルのが変更になり、C1セルの値は変更なしの場合、例えばA1セルに値を入力してからB1セルに値を入力する事になり、A1セルとB1セルの両方を全く同時に変更する事など出来ません。 するとA1セルの値を変更した時点で、未だ変更が行われていないB1セルとC1セルの値も累計されてしまいます。 その次にB1セルの値を変更しますと、A1セルとC1セルの値も累計されますから、結局、A1セルの変更後の値が2重に加算され、B1セルの値も本来であれば加算する必要のない変更前の値が1回加算され、C1セルの値も2重に加算される事になりますが、質問者様はその様なVBAにしたいと考えておられるのですか? 或いは、セルの値が変更された際には、その変更になったセルに関してのみ加算を行い、他のセルの値に関しては加算を行わないというやり方もあるかと思われますが、その場合では、上記の例の様にA1セルとB1セルの値が変更されただけではC1セルの値は加算されませんから、C1セルの値に関しては累計ではなくなってしまいますが、それでも宜しいのでしょうか? 又、その「複数のセル」の値が前日の値と全く同じ値であった場合には、例え日付が変わっても累計が行われる事は無い訳ですが、それでも宜しいのでしょうか? つまり、パソコンという機械に対して、いつの時点に入力されていた値に関して累計させる様に命令を出すようにしたいと質問者様が考えておられるのかが不明なままでは、他人である回答者には解決方法を考える事など不可能ですから、質問者様がどうしたいのかという事を御説明して頂きたいという事なのです。
- kagakusuki
- ベストアンサー率51% (2610/5101)
>シート1のセルは入力用として常に同一セルに数字を入力し、その累計結果をシート2のリンクしたセルに結果を表示するというもです。 >1日目、シート1のA1,B1,C1に3、2、4と入力し、2日目にまたシート1のA1,B1,C1に2、1、3と入力すると、1日目と2日目の累計をシート2のA1,B1,C1に5、3、5と表示するというものが欲しいのです。 それですと、 (1)シート1のA1セルに3を入力→シート2のA1セルに3と表示 (2)シート1のB1セルに2を入力→シート1のA1セルには3が、B1セルには2が入力されているので、シート2のA1セルには累計の6を表示し、B1セルには2を表示 (3)シート1のC1セルに4を入力→シート1のA1セルには3が、B1セルには2が、C1セルに4が入力されているので、シート2のA1セルには累計の9を表示し、B1セルには累計の4を表示し、C1セルには4を表示 (4)シート1のA1セルに2を入力→シート1のA1セルには2が、B1セルには2が、C1セルに4が入力されているので、シート2のA1セルには累計の11を表示し、B1セルには累計の6を表示し、C1セルには累計の8を表示 (5)シート1のB1セルに1を入力→シート1のA1セルには2が、B1セルには1が、C1セルに4が入力されているので、シート2のA1セルには累計の13を表示し、B1セルには累計の7を表示し、C1セルには累計の12を表示 (6)シート1のC1セルに3を入力→シート1のA1セルには2が、B1セルには1が、C1セルに3が入力されているので、シート2のA1セルには累計の15を表示し、B1セルには累計の8を表示し、C1セルには累計の15を表示 という事になるのではないでしょうか? 何を言いたいかと申しますと、シート1のA1、B1、C1の3つのセルに入力する値の内、前回入力した値と比べて、値が変化しなかった項目があった場合、その変化しなかった項目の値も累計しなければならないとしますと、シート1のA1、B1、C1の3つのセルに入力してある値の内のどれか1つに入力する度に、他の項目の値も次々と加算されていってしまうという事です。 逆に、値が変化した項目だけを累計して行くのだとしますと、例えば 1日目においてシート1のA1セルが3、B1セルが4、C1セルが5→シート2のA1セルが3、B1セルが4、C1セルが5 2日目もシート1のA1セルが3、B1セルが4、C1セルが5→シート2の各セルの値は累計されずにA1セルが3、B1セルが4、C1セルが5 3日目においてシート1のA1セルが3、B1セルが4、C1セルが2→シート2のA1セルが3、B1セルが4、C1セルが7 という様な事になります。 又、その他にもシート1に入力する際に、万が一、入力ミスを犯した場合にすら、その間違った値が加算される事になります。 この様な問題があるのですが、質問者様は、一体どの時点での値を累計する値と見做す様にすれば良いとお考えになっておられるのでしょうか?
No.4>です 2つのシートにこだわると 入力セルの下あたりに仮の合計セルを設けて (シート3の代わりに) マクロでコピーとなっちゃいますね、私のやり方では。
お礼
ありがとうございます。それも試してみます。 他のサイトでVBを使って似たような事を隣同士のセルでやる方法を見つけましたが、VBは全く解らず応用しようにもお手上げです。 ここから↓Const inpColumn = "A" '入力する列名が『A』列の場合 Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target '単一セルに入力した場合 If .Count = 1 Then '入力する列名に入力した場合 If .Column = Range(inpColumn & "1").Column Then '入力が数値の場合 If IsNumeric(.Value) Then '隣の列『B列』の値に入力した値を加える '(Offsetの2番目の1が1つ右のB列を示す) .Offset(0, 1) = .Offset(0, 1) + .Value End If End If End If End With End Sub これを別シートどうしで複数のセルでできればと思いいます。
- kagakusuki
- ベストアンサー率51% (2610/5101)
> シート1の A1に 5 を入力 シート2の A1に 5を 表示 > 続いて > シート1の A1に 3 を入力 シート2の A1に 8を 表示 ですと、5と3のどちらもSheet1のA1に入力している事になります。 もしかしますと、 「Sheet1の A1に 5 を入力 Sheet2の A1に 5を 表示 続いて Sheet1の A2に 3 を入力 Sheet2の A1に 8を 表示」 の間違いでは無いでしょうか? もしそうであればSheet2のA1セルには次の関数を入力して下さい。 =SUM(Sheet1!A:A) 又、もし類型を表示させるセルがSheet2のA1セルただ1つだけではなく、例えば 「Sheet1のA1セルには5が入力されていて、 Sheet1のA2セルには3が入力されていて、 Sheet1のA3セルには7が入力されていて、 Sheet1のA4セルには1が入力されていて、 Sheet1のA5セルには何も入力されていない という状態になっている場合、 Sheet2のA1セルには5を表示し、 Sheet2のA2セルには8表示し、 Sheet2のA3セルには15表示し、 Sheet2のA4セルには16表示し、 Sheet2のA5セルには何も表示しない」 という様にしたいという事であれば、まずSheet2のA1セルに次の関数を入力して下さい。 =IF(ISNUMBER(Sheet1!$A1),SUM(Sheet1!$A$1:$A1),"") その上で、Sheet2のA1セルをコピーして、Sheet2のA2以下に貼り付けて下さい。
お礼
説明不足で申し訳ございません。 シート1のセルは入力用として常に同一セルに数字を入力し、その累計結果をシート2のリンクしたセルに結果を表示するというもです。 1日目、シート1のA1,B1,C1に3、2、4と入力し、2日目にまたシート1のA1,B1,C1に2、1、3と入力すると、1日目と2日目の累計をシート2のA1,B1,C1に5、3、5と表示するというものが欲しいのです。
合計値を保持しておく同型のシートを用意して シート1(入力) シート2(正しい値) シート3(シート1+シート2の計算値) として、マクロでコピー(シート3=>シート2に値を貼り付け)
お礼
ありがとうございます。 現在その方法でやってるのですが、シート2枚ではやはり無理でしょうか?
- panacon
- ベストアンサー率31% (214/679)
slowhand280 さんへ 単純に、シート2とシート1の同じセルに同じ値を表紙させたいだけなら、シート2のA1をに半角で「=」と書いた状態でシート1をクリックし、シート1のA1をクリックしてENTERすれば、シート2のA1は、「=Sheet1!A1」となります。
お礼
説明不足で申し訳ございません。 シート1のセルは入力用として常に同一セルに数字を入力し、その累計結果をシート2のリンクしたセルに結果を表示するというもです。 1日目、シート1のA1,B1,C1に3、2、4と入力し、2日目にまたシート1のA1,B1,C1に2、1、3と入力すると、1日目と2日目の累計をシート2のA1,B1,C1に5、3、5と表示するというものが欲しいのです。
- angel2015
- ベストアンサー率21% (126/590)
一番単純な方法は 合計値を表示させたいセルで=を押した後 合計したいセルを押して+を押して追加していきます sum関数を利用するともっと簡単です http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/sum.htm
お礼
説明不足で申し訳ございません。 シート1のセルは入力用として常に同一セルに数字を入力し、その累計結果をシート2のリンクしたセルに結果を表示するというもです。 1日目、シート1のA1,B1,C1に3、2、4と入力し、2日目にまたシート1のA1,B1,C1に2、1、3と入力すると、1日目と2日目の累計をシート2のA1,B1,C1に5、3、5と表示するというものが欲しいのです。
- qwe2010
- ベストアンサー率19% (2193/11072)
シート1のA1をコピー シート2のA1に、形式を選択して貼り付け、から、リンク貼り付けをしてください。
お礼
説明不足で申し訳ございません。 シート1のセルは入力用として常に同一セルに数字を入力し、その累計結果をシート2のリンクしたセルに結果を表示するというもです。 1日目、シート1のA1,B1,C1に3、2、4と入力し、2日目にまたシート1のA1,B1,C1に2、1、3と入力すると、1日目と2日目の累計をシート2のA1,B1,C1に5、3、5と表示するというものが欲しいのです。
お礼
うまく説明できずに申し訳ございません。他のサイトでVBを使って似たよう事を隣り合わせのセル同士でやる方法を見つけました。 Const inpColumn = "A" '入力する列名が『A』列の場合 ここから↓ Private Sub Worksheet_Change(ByVal Target As Excel.Range) With Target '単一セルに入力した場合 If .Count = 1 Then '入力する列名に入力した場合 If .Column = Range(inpColumn & "1").Column Then '入力が数値の場合 If IsNumeric(.Value) Then '隣の列『B列』の値に入力した値を加える '(Offsetの2番目の1が1つ右のB列を示す) .Offset(0, 1) = .Offset(0, 1) + .Value End If End If End If End With End Sub これに似た事を複数のセルで別のシート同士でやりたいのですが、VBは全く解らず、お手上げです。