1

多数の行と列で構成されるデータセットがあります。

a1 b1
a2 b2
a3 b3
a4 b4
a5 b5

この (a2-a1)/(a2+a1) のようなインデックスを計算して、一度に 1 列ずつセルをループするコードを書きたいと思います。結果をsheet2に保存したい。

このコードを使用しましたが、エラーが発生し続けます。結果をシート2に保存しようとしているところで壊れます。

このコードを修正するには助けが必要です:

Sub Combination()

Dim jCell As Range
Dim kCell As Range
Dim result As Double

Sheet2.Cells.Clear

For Each jCell In ActiveSheet.UsedRange
    For Each kCell In ActiveSheet.UsedRange
        result = (jCell.Value - kCell.Value) / (jCell.Value + kCell.Value)

        Sheet2.Cell("result").Value = Sheet1.Cell("result").Value

    Next kCell
Next jCell

End Sub

前もって感謝します

4

1 に答える 1

0

いくつか間違っていることがあります(そして、これは実用的なものよりもVBAを学ぶためのものだと思います-したがって、これを行うための非vbaの方法は無視します)。

1つは、次のような構文を見たことがないということです。

Sheet2.Cell("result").Value = Sheet1.Cell("result").Value

もう1つは、データセットが文字列型データ( "a1" b1 "など)で構成されていることです。文字列を使用して数学演算を実行するのはなぜですか?文字列を結合(連結)しようとしていますか?文字列を使用して任意の数学演算を実行します。

3つ目は、各行のシート2に出力を書き込む方法が必要なことです。これを行うには、おそらくカウンターを使用することをお勧めします。これは機能するサブの例です-それがあなたがやりたいことなのか、それともあなたに役立つのかはわかりません:

Sub Combination()

Dim jCell As Range
Dim kCell As Range
Dim result As String
Dim i As Integer
i = 1

Sheet2.Cells.Clear

For Each jCell In ActiveSheet.UsedRange
    For Each kCell In ActiveSheet.UsedRange
        result = jCell.Value & kCell.Value

        Sheet2.Cells(i, 1).Value = result

        i = i + 1

    Next kCell
Next jCell

End Sub

幸運を。

于 2012-11-01T20:57:57.183 に答える