前提・実現したいこと
Worksheets(2)のA列に変位が,B列に電圧が並んでいるデータがあります.このデータから,変位ごとに電圧の平均値を計算したいです.
具体的には変数Dに変位の初期値を代入して,A列と比較して一致したらその行のB列の値をworksheets(1)の1行目のD列以降に記入.最下行までA列を比較し終わったら,条件に合ったB列の値の平均をとり,Dに0.001を加え,またA列とDの値を比較する.
Worksheets(2)
A列 | B列 |
---|---|
-3.500 | 1 |
-3.500 | 2 |
-3.499 | 3 |
-3.499 | 4 |
-3.498 | 5 |
-3.498 | 6 |
-3.497 | 7 |
-3.497 | 8 |
-3.496 | 9 |
-3.496 | 10 |
発生している問題
For文の4回目のループ以降If文内が飛ばされ,以下のように出力されます.しかし,途中から挙動が変わる理由が分かりません.
Worksheets(1)
A列 | B列 | C列 | D列 | E列 |
---|---|---|---|---|
-3.500 | 1.5 | 1 | 2 | |
-3.499 | 3.5 | 3 | 4 | |
-3.498 | 5.5 | 5 | 6 | |
-3.497 | 0 | |||
-3.496 | 0 |
該当のソースコード
VBA
1Sub Macro1() 2 3Dim D As Double 4Dim i As Long, t As Long, n As Long 5Dim Ave As Double, Sum As Double 6 7D = -3.5 '変位の初期値 8 9For i = 1 To 5 10 11 Sum = 0 12 n = 0 13 14 Worksheets(1).Cells(i, 1).Value = D 'DをWorksheets(1).A列に入力 15 16 For t = 1 To 10 '1行目から10行目までWorksheets(2).A列とDを比較する 17 18 If D = Worksheets(2).Cells(t, 1).Value Then '変位がDに一致した場合の電圧をWorksheets(1)のD列以降に記入し,その合計をとる 19 Sum = Worksheets(2).Cells(t, 2).Value + Sum 20 Worksheets(1).Cells(i, n + 4).Value = Worksheets(2).Cells(t, 2).Value 21 n = n + 1 22 End If 23 24 Next t 25 26 If n = 0 Then n = 1 27 28 Ave = Sum / n 29 30 Worksheets(1).Cells(i, 2).Value = Ave 31 32 D = D + 0.001 33 34Next i 35 36End Sub
試したこと
デバッグのステップインを行ったところ4週目以降のループ内ではIf文でDとWorksheets(2).Cells(t, 1).Valueが不一致と判定されているようで,If文の中に入っていません.
また,iを変えても同様に4回目のループからIf文に入らなくなります.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/06 03:56