Excel中的数据处理

时间:2015-05-29 13:01:47

标签: excel vba excel-vba

我希望相当容易。

如果我在工作表中有一列值,我如何将这些值设置为等于我可以在VBA中使用的变量。

例如,列A具有100个权重值,列b具有100个高度值。在VBA脚本中,我想将“权重”设置为A列中的所有值,将高度设置为b。并说BMI =体重*身高,然后将BMI写入C栏。

我知道我可以用公式做这个例子但是对于实际的任务我将循环几百次并且不知道列索引值。

谢谢!

编辑:要进一步指定,列是随机排列的。我将无法使用相对单元格引用。最终,我将找到该列,命名它与参考另一列的数据一起工作,然后找到下一列并做同样的事情。

编辑2:我认为答案的重点是实现我在示例中指定的结果,而不是实现我试图描述的过程。

2 个答案:

答案 0 :(得分:0)

首先确定限制,然后选择要填充的 C 列的那部分,然后:

Sub BMII()
   Dim r As Range

   For Each r In Selection
      r.Value = r.Offset(0, -2).Value * r.Offset(0, -1).Value
   Next r
End Sub

修改#1

确定要处理的列和行后,请更新以下宏的参数部分并运行它:

Sub BMIII()

   Dim wcol As String, hcol As String, bcol As String
   Dim start_row As Long, end_row As Long, i As Long

   ''''''''''' PARAMETER SECTION ''''''
   start_row = 5
   end_row = 200
   wcol = "A"
   hcol = "B"
   bcol = "C"
   ''''''''''''''''''''''''''''''''''''

   For i = start_row To end_row
      Cells(i, bcol).Value = Cells(i, wcol).Value * Cells(i, hcol).Value
   Next i
End Sub

答案 1 :(得分:0)

这应该足以让您了解如何完成这项简单的任务:

Sub user3033634()
Dim LastRow As Integer

With Sheets("Sheet1")
    LastRow = .Cells(Rows.Count).End(xlUp).row
    For i = 1 To LastRow
        .Cells(i, "C") = .Cells(i, "A") * .Cells(i, "B")
        '.Cells(i, 3) = .Cells(i, 1) * .Cells(i, 2)
    Next i
End With

End Sub