Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12667 / 76734 ←次へ | 前へ→

【69584】今、VBAで感度などを算出したいと思っています。
質問  ここ。  - 11/8/4(木) 16:01 -

引用なし
パスワード
   はじめまして。

今、VBAで感度、特異度、1−特異度を算出し、最終的にはROC曲線を作成したいと思っています。

   A   B
1  2.35  a
2  19.81 b
3  5.63  a
・・・
このようなセルが、120行まで続いています。

aを周期ありとして、122行から、

122 0.01    周期あり 周期なし   
123 以上     ○    △
124 未満     □    ■
125 合計      ☆    ◎
126 感度     ▲
127 特異度    ★
128 1−特異度  ●
129
130 0.02    周期あり 周期なし
131 以上     
132 未満
133 合計
134 感度
135 特異度
136 1-特異度
・・・
というように、縦に表示させていきたいと考えています。

まず、ためしに、0.01における感度と特異度、1−特異度出力されるようにしてみました。

インターネットや本で探りながら、下記のようにやってみました。

Sub test1()

k = 0.01
i = 1
myshift = 121
Cells(myshift + (i * 8 - 7), 1) = k
Cells(myshift + (i * 8 - 7), 2) = "周期あり"
Cells(myshift + (i * 8 - 7), 3) = "周期なし"
Cells(myshift + (i * 8 - 7) + 1, 1) = "以上"
Cells(myshift + (i * 8 - 7) + 2, 1) = "未満"
Cells(myshift + (i * 8 - 7) + 3, 1) = "合計"
Cells(myshift + (i * 8 - 7) + 4, 1) = "感度"
Cells(myshift + (i * 8 - 7) + 5, 1) = "特異度"
Cells(myshift + (i * 8 - 7) + 6, 1) = "1−特異度"
Range(Cells(myshift + (i * 8 - 7) + 1, 2)).Value = Evaluate("SUMPRODUCT(((A1:A120)>=k)*((B1:B120)=a))")
Range(Cells(myshift + (i * 8 - 7) + 1, 3)).Value = Evaluate("SUMPRODUCT(((A1:A120)>=k)*((B1:B120)=b))")
Range(Cells(myshift + (i * 8 - 7) + 2, 2)).Value = Evaluate("SUMPRODUCT(((A1:A120)<k)*((B1:B120)=a))")
Range(Cells(myshift + (i * 8 - 7) + 2, 3)).Value = Evaluate("SUMPRODUCT(((A1:A120)<k)*((B1:B120)=b))")

End Sub

しかし、「エラー1004 アプリケーション定義またはオブジェクト定義のエラーです。」が出てしまいました。

SUMPRODUCTを使わないで、COUNTIFなども使ってみましたが、どうにも動きません。

VBA初心者なのですが、勉強したいと思い、いろいろと挑戦しているところです。

もしよかったら、ご回答いただけるとうれしいです。

3 hits

【69584】今、VBAで感度などを算出したいと思っています。 ここ。 11/8/4(木) 16:01 質問
【69586】Re:今、VBAで感度などを算出したいと思... momo 11/8/4(木) 19:16 発言
【69595】Re:今、VBAで感度などを算出したいと思... ここ。 11/8/5(金) 12:40 お礼

12667 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free