2017-10-05 30 views
0

Table「WorksheetFunctionクラスのスローププロパティを取得できません」エラー

Sub GraphData() 
Dim GraphStart As Integer 
Dim GraphEnd As Integer 
Dim TimeRange As Range 
Dim AssayRange As Range 
Dim LastRow As Integer 
Dim AssayTime As Date 
Dim k As Integer 
Dim m As Integer 

LastRow = ActiveWorkbook.Worksheets("RawData").Range("B15").Value + 17 

For k = 18 To LastRow 
    If ActiveWorkbook.Worksheets("RawData").Range("H" & k).Value < 2 Then 
     GraphStart = k + 1 
    End If 
Next 

For m = 18 To LastRow 
    If ActiveWorkbook.Worksheets("RawData").Range("H" & m).Value < 32 Then 
     GraphEnd = m 
    End If 
Next 

Set TimeRange = Application.Range(Cells(GraphStart, "F"), Cells(GraphEnd, "F")) 
Set AssayRange = Application.Range(Cells(GraphStart, "H"), Cells(GraphEnd, "H")) 


ActiveWorkbook.Worksheets("Assay Result").Range("D31").Value = Application.WorksheetFunction.Slope(AssayRange, TimeRange) 

ActiveWorkbook.Worksheets("Assay Result").Range("D32").Value = (Application.WorksheetFunction.Correl(AssayRange, TimeRange))^2 

ActiveWorkbook.Worksheets("Assay Result").Range("D33").Value = Round(Application.WorksheetFunction.Min(AssayRange), 2) & " to " & Round(Application.WorksheetFunction.Max(AssayRange), 2) 

End Sub 

私は誰かが前にこの問題を持っていると信じています。エラーは一貫性がなく、いつか発生します。

  1. 傾きを計算するためのデータ範囲が変化しています。そこで、私はxとyのセリエのために2つのデータ範囲変数を設定しました:TimeRangeとAssayRange
  2. TimeRangeデータは列F18からF列の終わりまでで、分析範囲は列H18からHの終わりまでです。
  3. H列> 2および< 32のデータのみが範囲に選択され、計算に使用されます。
  4. 列FおよびHのデータは10進数のデータ型です。 エラーの原因は何ですか?
+0

コードは分かりません。私はシート上のデータで意図を説明する必要があると思う。 –

+0

このデータは反応の測定値です。 5秒ごとに測定値を記録した。記録された値はカラムHの生成物濃度に変換された。カラムFで経過時間が計算された。データはカラム18からのものである。前のステップから、LastRowを較正するために使用されるセルB15のデータの行番号を計算した。 – yoyo

+0

写真を追加する場所がわかりません。助けてもらえますか? – yoyo

答えて

0

これを試してください。

Sub GraphData() 
Dim GraphStart As Integer 
Dim GraphEnd As Integer 
Dim TimeRange As Range 
Dim AssayRange As Range 
Dim LastRow As Integer 
Dim AssayTime As Date 
Dim k As Integer 
Dim m As Integer 
Dim Ws As Worksheet, toWs As Worksheet 
Dim Wf As WorksheetFunction 

Set Wf = WorksheetFunction 
Set Ws = Worksheets("RawData") 
Set toWs = Worksheets("Assay Result") 

    With Ws 
     LastRow = .Range("B15").Value + 17 

     For k = 18 To LastRow 
      If .Range("H" & k).Value < 2 Then 
       GraphStart = k + 1 
      End If 
     Next 
     For m = 18 To LastRow 
      If .Range("H" & m).Value < 32 Then 
       GraphEnd = m 
      End If 
     Next 

     Set TimeRange = .Range("F" & GraphStart, "F" & GraphEnd) 
     Set AssayRange = TimeRange.Offset(, 2) 
    End With 
    With toWs 
     .Range("d31") = Wf.Slope(AssayRange, TimeRange) 
     .Range("d32") = Wf.Correl(AssayRange, TimeRange)^2 
     .Range("d33") = Round(Wf.Min(AssayRange), 2) & " to " & Round(Wf.Max(AssayRange), 2) 
    End With 

End Sub 
+0

ありがとうございます。それは今働く。私は私の古いコーディングで何が間違っているのか把握しようとします。 – yoyo

+0

セル(GraphStart、 "F")が正しくありません。 ws.Cells(GraphStart、 "F") –

+0

私はこれを見るだけです。ありがとう、Dy.Lee。 – yoyo

関連する問題