我需要帮助修复vba宏

时间:2012-11-01 20:07:30

标签: excel vba

我有一个由多个行和列组成的数据集,例如

a1 b1
a2 b2
a3 b3
a4 b4
a5 b5

我想编写代码,一次一列地循环遍历单元格,计算像这样的索引(a2-a1)/(a2 + a1)。我希望将结果保存到sheet2。

我已经使用过此代码,但我一直收到错误消息。它打破了我试图将结果保存到sheet2的地方。

我需要帮助来修复此代码:

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

提前致谢

1 个答案:

答案 0 :(得分:0)

有一些问题(我认为这更像是学习VBA而不是任何实际的东西 - 所以我会忽略非vba的方法来做到这一点。)

一个是我从未见过这样的语法:

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

另一个是您的数据集包含字符串类型数据,例如“a1”b1“ - 现在你为什么要用字符串进行数学运算?你是否想要将它们组合起来(连接它们)? - 否则如果用字符串进行任意数学运算,你就会得到无意义的数字。

第三个是您需要一种方法将输出写入每行的第二张纸。您可能希望使用计数器来执行此操作。这是一个有效的子例子 - 我不确定它是你想要做的还是它对你有帮助:

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

祝你好运。