2017-03-21 9 views
1

異なる列のRSSの計算を自動化しようとしています。以下の例では、G列のY値のRSSを計算します。Y値のみが列を変更します。つまり、X値は常に同じ列になります。VBA:次の列で同じプロセスを繰り返す

列の最初の行に名前がなくなるまで、次の列のY値(列Hなど)に対してこの計算を自動的に繰り返すことはできますか?

私はすでにこのプロセスをループしようとしましたが、VBAは常にエラーメッセージを表示します。

Private Sub Regr(strWksData As String, WsTools As Worksheet, strWksFF3 As String, strWksResult As String) 

Dim NoOfRow As Long 

Dim rX1 As Range 
Dim rX2 As Range 
Dim rX3 As Range 

Dim rY1 As Range 
Dim rY2 As Range 
Dim rX3 As Range 


'Set X ranges 
Set rX1 = Worksheets(strWksFF3).Range("C2:E21") 
Set rX2 = Worksheets(strWksFF3).Range("C22:E41") 
Set rX3 = Worksheets(strWksFF3).Range("C42:E64") 

'Set Y ranges 
Set rY1 = Worksheets(strWksData).Range("G2:G21") 
Set rY2 = Worksheets(strWksData).Range("G22:G41") 
Set rY3 = Worksheets(strWksData).Range("G42:G64") 

'Loop through columns 
'Provide statistic 
Do Until Worksheets(strWksData).Range("G").Value = "" 

vStat1 = Application.WorksheetFunction.LinEst(rY1, rX1, True, True) 
Worksheets(strWksResult).Range("G2").Value = vStat1(5, 2) 
NoOfRow = Worksheets(strWksData).Range("G2:G21").Rows.Count 
WsTools.Range("B2").Value = NoOfRow 

vStat2 = Application.WorksheetFunction.LinEst(rY2, rX2, True, True) 
Worksheets(strWksResult).Range("G3").Value = vStat2(5, 2) 
NoOfRow = Worksheets(strWksData).Range("G22:G41").Rows.Count 
WsTools.Range("B3").Value = NoOfRow 

vStat3 = Application.WorksheetFunction.LinEst(rY3, rX3, True, True) 
Worksheets(strWksResult).Range("G4").Value = vStat3(5, 2) 
NoOfRow = Worksheets(strWksData).Range("G42:G64").Rows.Count 
WsTools.Range("B4").Value = NoOfRow 

Call GetNextColumn("G") 
counter1 = counter1 + 1 

Loop 


MsgBox ("RSS Done") 

End Sub 

どのような形式のヘルプも深く感謝します。事前にどうもありがとうございました!

+0

範囲引数を追加rngColvals'が、代わりにハードコーディングされたもの、RY1の本を使用し、 '、と言います。または、次のループのために統計情報コードを下に向かって囲みます。それに応じて0から1までの値と、それに応じてオフセット列G –

+0

どうすればこのコードを書くことができますか?私はVBAをかなり新しくしています... – AxRo

+0

for i = 0 to 1:vStat3 = Application.WorksheetFunction.LinEst(rY3.offset(0、i)、rX3.offset(0、i)、True、True):next私はこれのようなものです、私は月にテストすることができません。整数部分 'offset'と 'for..next loop' google/researchを見ればわかるでしょう。 –

答えて

0

次のコードを使用して、ワークシートの最後の列のインデックスを取得することができます

:最後の列はY.そして、あなたは、単純な十分なループを書くことができている場合、これはあなたに25を与えるだろう

Dim wSheet : Set wSheet = Thisworkbook.worksheets("mysheetnamehere") 
lastColumn = wSheet.Cells(1, wSheet.Columns.Count).End(xlToLeft).Column 

For myCol = 1 to lastColumn 
    wSheet.Cells(2, myCol).Value = "Something" 
Next myCol 

上記の例では、行2のすべての列をヘッダー値で繰り返し、「Something」というテキストを挿入します。

ます。また、最後の行を取得することができ、あなたは非常に似て、その必要性必要があります。

lastRow = wSheet.Cells(wSheet.Rows.Count, 1).End(xlUp).Row 
+0

上記のコードではどこにこのループを組み込むことができますか?私はVBAでのコーディングで多くの経験がありません。 – AxRo

関連する問題