2017-05-30 12 views
2

ここに誰かが私を助けてくれることを願っています: 私が持っている情報を使って1つのワークシートにある長いデータセットのサンプル共分散を計算しようとしています各サンプルを選択するための第2のワークシート。 「C1の%のノーム」という名前の データセットが含まれている最初のワークシートには、次のようになります。vba変数を使用してセルに数式を挿入する方法

  | A | B | C | D | E | F | 
     1 |throw|temp |depth| s | c | sp | 
     2 60 0,3 0,456 0,123 ... ... 
     .. ... ... ... ... ... ... 
     189 61 0,42 ... ... ... ... 
     .. ... ... ... ... ... ... 
     375 62 0,35 ... ... ... ... 
     .. 

2番目のワークシートには、使用する各「スロー」やサンプルの限界が含まれ、「Mapeoランス」と命名し、次のようになります。何をすべきかだから、基本的に

  | A | B | C | 
     1 |throw|lim i|lim s| 
     2 60  2 188 
     3 61 189 374 
     4 62 375 ... 

、(最初のワークシートの)行2と188の間でデータを使用して、例えば、「TEMP」と「深さ」の標本共分散を計算することですサンプルとして189〜374行目のデータをサンプルとして使用します。

私は、「テスト」という文字列があることを知っている「1004」 アプリケーション定義またはオブジェクト定義エラー

私はこのコードを書いた:

Sub covariances() 

    Dim i As Integer 
    Dim limi As Integer 
    Dim lims As Integer 
    Dim test As String 

    i = 2 
    Sheets("Mapeo Lances").Select 

    While i < Cells(Rows.count, 1).End(xlUp).Row + 1 

    limi = Range("B" & i).Value 
    lims = Range("C" & i).Value 

    test = "=covariance.s('C1% Norm'!B" & limi & ":B" & lims & ";'C1% Norm'!C" & limi & ":C" & lims & ")" 
    Range("D" & i).Formula = test 
    i = i + 1 

    Wend 

    End Sub 

をしかし、私は次のエラーを取得: ランタイムエラーを正しく連結された。文字列の先頭にある "="記号を削除すると、セルはエラーのない所望のテキストで埋められます。

... 
    dim range_i as Range 
    dim range_s as Range 

    ... 
    while... 
    ... 
    set range_i = Worksheet("C1% Norm").Range("B" & limi & ":B" & lims) 
    set range_s = Worksheet("C1% Norm").Range("C" & limi & ":C" & lims) 

    Range("D" & i).value = Application.WorksheetFunction.Covariance_S(range_i,range_s) 

    wend 

しかし、私は実際に教育目的のために、各セルの数式を必要とする...私は間違って何をやっている:

は、私はそれがこれを使って仕事を得ることができます知っていますか?

答えて

2

したがって、;(セミコロン)はとなり、地域の設定では区切り記号となります。 Excelの式では問題なく動作しますが、残念ながらVBAから数式を設定している場合はそうではありません。 VBAからそれを設定する場合は、カンマを使用します。魔法によってその後

test = "=covariance.s('C1% Norm'!B" & limi & ":B" & lims & ",'C1% Norm'!C" & limi & ":C" & lims & ")" 
'               ^^^ 

を、Excelで;に置き換えられているコンマがあります。地域設定の哲学は、(VBA)プログラマーではなく、エンドユーザーを対象としているようです。


あなたが代わりにそれをExcelで見えに正確にどのようにVBAで数式を設定する.FormulaLocalを使用することができます。

Range("D" & i).FormulaLocal = test 
+1

おかげでA.S.H、両方のソリューションは魅力のように働きました! – Patux

関連する問題