お世話になります。

 私は会社でExcelを使い事務をしております。
 式を入力して少し事務を簡素化する事は出来ますが、マクロやVBには明るくありません。
 シート1の雛型1箇所に入力すると同時に、シート2に一覧表が作成される様には出来ないものでしょうか?
 頑張ってマクロを使ってみましたが、シート1のB1を入力するとシート2のB1の数値まで変わってしまいます。(表を参考にしてください)

 シート1(雛型)
   A       B        C
1 固定数  入力した数字  数式A/B


 シート2(一覧表)
    A           B         C
1 シート1A1の数字 シート1B1の数字 シート1C1の数字 
2 シート1A1の数字 シート1B1の数字 シート1C1の数字
3 シート1A1の数字 シート1B1の数字 シート1C1の数字
4 シート1A1の数字 シート1B1の数字 シート1C1の数字

 分かりにくい説明で申し訳ありません。
 皆さまのお知恵をお待ちしております。
 よろしくお願いします。

A 回答 (4件)

シート名



シート1 : 雛形
シート2 : データ蓄積用

シート1のB1に変更があった場合、シート1のA1:D1の:

1)「値のみ」をシート2に順次蓄積する。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastA As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("シート1")
Set ws2 = Sheets("シート2")
With Target
If .Address <> "$B$1" Or .Count <> 1 Or IsEmpty(Target) Then Exit Sub
If WorksheetFunction.Count(ws1.Range("a1:b1")) <> 2 Then Exit Sub
lastA = ws2.Range("a65536").End(xlUp).Row
ws2.Range("a" & lastA + 1).Resize(1, 4).Value = _
ws1.Range("a1").Resize(1, 4).Value
End With
End Sub

2)数式も含めてシート2に順次蓄積する。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastA As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("シート1")
Set ws2 = Sheets("シート2")
With Target
If .Address <> "$B$1" Or .Count <> 1 Or IsEmpty(Target) Then Exit Sub
If WorksheetFunction.Count(ws1.Range("a1:b1")) <> 2 Then Exit Sub
lastA = ws2.Range("a65536").End(xlUp).Row
ws2.Range("a" & lastA + 1).Resize(1, 4).Copy _
Destination:=ws2.Range("a" & lastA+1)
End With
End Sub
    • good
    • 0
この回答へのお礼

 迅速かつ丁寧なお返事をありがとうございます。
 早速試してみたところ、思っていた通りになりました。これで事務処理もスムーズになると思います。
 丁寧な方々に出会えてすぐに問題も解決でき、本当ならば全員にポイントを差し上げたいところですが、今回はこのような配点にさせていただきました。
 ご了承下さいませ。
 本当にありがとうございました。
 
 

お礼日時:2004/12/09 14:25

私も#1のお方と同じく質問の意味(何をしたいか)が判りません。

シート1は固定数と入力値1個を取るためのものですよね。シート1のC1の数式A/Bは何のためにある(使う)のですか。
シート2は何をしたいのでしょうか。
数値実例でも3-4行上げてもらえれば判るかもしれない。
シート2の各行で変わるのは何ですか。
●今閃きました。ひょっとしてシート1に入力した
値を行をづらして記録すること及びA/Bの値を計算して
累積して記録して行きたいのでしょうか。
それであればシート1のChangeイベントなど使い
シート2の行数を1ずつ増やせば良いのですが、VBAとしてもやや難しい。行を表す変数の扱い(下記のi)が私も含め、初学者には難しいと思う。
シートのChangeイベントに
Private Sub Worksheet_Change(ByVal Target As Range)
i = i + 1
Worksheets("sheet3").Cells(i, "B") = Target
End Sub
標準モジュールに
Public i
Sheet1のセルに値をいれるとSheet3のB列に
B1->B2->B3・・・に入力値をセットします。
あとA1の値とか、C列は(VBAでもやれますが)関数でやれば良いでしょう。

この回答への補足

 皆さまお返事ありがとうございます。
 質問の仕方が悪く申し訳ありません。
 今回アークタンジェントを利用して角度取得一覧表を作成することが目的です。
 そのためにシート1のA1には10、C1はA/B、D1には式ATAN(C1)*180/PI()を入力し、B1に数値を入力すれば角度を求めることが出来る雛型を作成しました。
 B1が更新されるたびに、シート2にA1~D1の入力内容が自動的にとび、一覧表が作成されるようにしたいと思っています。
 ちなみに求めたい角度は800~1000個あります。
 初心者はやはり欲張らずに一覧表を作成し、式をコピーした方が良いのでしょうか?
 皆さまの意見をお待ちしています。

補足日時:2004/12/09 09:26
    • good
    • 0

Sheet1の一列目を入力用として、Sheet2にデータを重ねていくということでしょうか?


Sheet1のシートタブを右クリックして「コードを表示」を選択
下記のコードを貼り付ける。

Sheet1のB1が変更された時点でSheet1のA1:B1が入力されている場合、Sheet2のA列の最後の次の行に転記されます。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim lastA As Long, ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("sheet1")
Set ws2 = Sheets("sheet2")
With Target
If .Address <> "$B$1" Or .Count <> 1 Or IsEmpty(Target) Then Exit Sub
If WorksheetFunction.Count(ws1.Range("a1:b1")) <> 2 Then Exit Sub
lastA = ws2.Range("a65536").End(xlUp).Row
ws2.Range("a" & lastA + 1).Resize(1, 3).Value = _
ws1.Range("a1").Resize(1, 3).Value
End With
End Sub
    • good
    • 0
この回答へのお礼

 お返事ありがとうございます。
 質問の仕方が悪く申し訳ないです。
 #3さんのお返事に補足しました。
 もしお時間があれば回答お願いします。

お礼日時:2004/12/09 09:47

すみません、ちょっとやりたいことの内容がよくわからないんですが、質問に書かれたシート2はご自分で作ったマクロの結果という意味でしょうか?


作りたいのは

 シート1(雛型)
   A       B        C
1 固定数  入力した数字  数式A/B
2 固定数  入力した数字  数式A/B
3 固定数  入力した数字  数式A/B
4 固定数  入力した数字  数式A/B

 シート2(一覧表)
    A           B         C
1 シート1A1の数字 シート1B1の数字 シート1C1の数字 
2 シート1A2の数字 シート1B2の数字 シート1C2の数字
3 シート1A3の数字 シート1B3の数字 シート1C3の数字
4 シート1A4の数字 シート1B4の数字 シート1C4の数字

ということでしょうか?
単純にシート1のそれぞれのセルを参照する、ということではダメなんですね?
    • good
    • 0
この回答へのお礼

 お返事ありがとうございます。
 質問の仕方が悪く申し訳ないです。
 #3さんのお返事に補足しました。
 もしお時間があれば回答お願いします。

お礼日時:2004/12/09 09:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

  • 縦書きと横書きはどちらが読みやすい?

    普段何気なく読んでいる文章ですが、縦書きか横書きか、意識したことはありますか?制作側としては読み手はどちらの方が読みやすいと思うかはとても大きな問題です。教えて!gooには、 「『横書き』と『縦書き』、...

  • 昭和の日ってどういう日?

    ゴールデンウィーク初日の4月29日は「昭和の日」です。今や平成生まれの人も多い時代ですが、「なぜ昭和の日があるの?」という疑問をもったことはありませんか?和暦を挙げるのなら、大正の日、明治の日、平成の日...

  • Excelの意外な使い方とは?

    会社のパソコンに必ず入っている、と言っても過言ではない、Office系ソフトの「Word」と「Excel」。PCを使う職場にいた方なら、一度は触ったことがあるかと思います。Wordは仕事以外に使う方法がすぐ浮かびそうです...

  • 孤独死を防ぐために、一人一人が今できること

    先日、「教えて!goo」で「孤独死って怖いですか?」という記事を配信した。ここではさまざまな意見が交わされたが、出来ることなら最期を迎えるまで、誰かとともに過ごしたいと願うのはごく自然な感情なのではない...

  • せきらら女子会:第83話「ご近所トラブル?」

    恋愛、結婚、お金、夜の営み...いろんなことに対して、赤裸々にトークする女の子達のお話。考え方の違う4人が、今日も居酒屋に集まります。

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる

このQ&Aを見た人が検索しているワード

コンピュータやスピーカーなどのオーディオ、スマートフォンをはじめとした携帯電話とそのサービスに関する質問が充実。急なトラブルの対策案もここで得られるかもしれません。

このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ