電子書籍の厳選無料作品が豊富!

ヘルプを見ると、直接やる方法は、どうもないように見えました。なにか、やり方を、独特なやり方でも結構ですので、お分かりの方お教えください。よろしくお願いします。

累積にしたいというのは次のような意味です。試験点数の分布が以下のようだとします。
0-25点が1人, 25-50点が10人, 50-75点が2人, 75-100点が1人。(度数分布)
これをもとにして、
0-25点が1人, 0-50点が11人, 0-75点が13人, 75-100点が14人。(累積度数分布)この例だと手計算でもできそうですが、ちょっと量が多いので、なにか、マクロでもいいし、関数でもいいので、システマチックな方法を探しております。

A 回答 (4件)

こんばんわ。

早速ご質問に答えさせていただきます。

No1
可能です。
If Target.Address <> Range("B" & myRow).Address Then Exit Subを
If Target.Column <> 2 then Exit Subと書き換えて下さい。

No2
関係ないと思います。

No3
これは、エラーは出ると思います。If Target.Row = 1 Then Exit Subの下に、If Target.value >0 tThen と入力して下さい。これで、エラーが出なくなると思います。

お試しになってみて下さい。
    • good
    • 0
この回答へのお礼

質問にお答えいただき、ありがとうございます。まだ試していないのですが、感謝いたします。

お礼日時:2002/12/06 19:01

初めまして。


1行目をタイトル行とし、B列に度数分布データが入力されていてC列に累積度数分布データを表示させるようにサンプルマクロを組んでみました。
次のように操作してみて下さい。

1.データの入っているブックを立ち上げ、ALT+F11キーを押してVBE画面を表示させ、画面左上のVBAProjectと書かれている上にマウスポインターを合わせて右クリック後、挿入→クラスモジュールを順にクリックし、表示された右側の白い部分に下記のコードをコピー&ペーストする。

Public WithEvents App As Application

Private Sub App_SheetChange(ByVal Sh As Object, ByVal Target As Range)

Dim myRow As Integer

myRow = Target.Row

If Target.Address <> Range("B" & myRow).Address Then Exit Sub
If Target.Row = 1 Then Exit Sub
If Target.Row = 2 Then
Target.Offset(0, 1).Value = Target.Value
Else
Target.Offset(0, 1).Value = CInt(Target.Value) + CInt(Target.Offset(-1, 1).Value)
End If
End Sub

2.次に画面左上のVBAProjectと書かれている下のThisWorkbookをダブルクリックし、表示された右側の白い部分に下記のコードをコピー&ペーストする。

Dim myClass As New Class1

Private Sub Workbook_Open()

Set myClass.App = Application

End Sub

3.保存してブックを終了し、再度立ち上げる。

B列に値を入力してみて下さい。貴方様の思い通りの動作が実現できます。

ご不明な点・不具合等がありましたら、ご遠慮なくお知らせ下さい。私のわかる範囲でご一緒に考えていきたいと思います。
    • good
    • 0
この回答へのお礼

ご親切に、ありがとうございます。B列に打ち込むたびに、隣のC列に、累積度数が出てきて楽しいですね。Excelでマクロを使ったのはこれが初めてです。わかりやすく書いてくださりありがとうございました。今思いついたことを質問したいのですが、

(1)手で打ち込まないで、copy & paste でB列に10行ほどためしに、貼り付けた場合は、C列に累積が出てこない。copy & paste でも反応するようにするのは可能でしょうか?
(2)ブックの第3シートにてこのマクロの実験をしようと思って実施したのですが、第1, 第2シートにも影響あるでしょうか?
(3)ブックを終了しないでもマクロを、仕切りなおしして、リスタートさせる方法はありますか?(なに言っているか解らなかったらすみません。さっき、sheet 1(既に他のデータがある)のB列の下のほうで、egxとかでたらめを打ち込んだら、型が一致しませんとか言われて、sheet1でもマクロが反応してるように見えたこと、そして、そのマクロの「型が一致しません」がきっかけで、その後sheet3に飛んでもマクロは反応しなくなったように見えたもので。勘違いだったらすみません)

いろいろ初心者なので変な質問だと思います。すみません。少しだけですが、Cプログラムなどの経験があるので、お教えいただいたマクロをゆっくりよみたいと思います。ありがとうございます。

お礼日時:2002/11/21 11:38

度数分布データが、B2,B3,B4,...に入っているとします。


累積度数分布データを、C2,C3,C4,...に入れるとすると、
C2のセルに =B2、 C3のセルに =C2+B3 の式を設定し、
C4以降は、C3の式をコピーすればできます。
これがシステマチックな方法かどうかはわかりませんが...
    • good
    • 0

1行目にA列から階級がズラッと書いてあって、2行目に度数分布が出ているとします。


最初の階級は累積であってもなくても同じなので、
A3: =A2

2つ目以降の階級は前の階級の累積度数に自分の階級の度数を足したモノなので
B3: =A3+B2
フィルハンドルをつかんでダ~と階級の数だけ伸ばしておしまい。
    • good
    • 0

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