如何在VB excel 2003中迭代MIN/MAX函数中的单元格?

0 iteration excel vba excel-vba minmax

    Set min=min1=1000, max=max1=position=0   
    For i=2 to 10 do 
    min=**MIN(A(i,j):A(i+5,j));**  
    if position=0 then min1=min, position=1 else  
    For j=2 to 10 do  {max=**MAX(A(i,j):A(i+5,j));**  
    if max<min then next j else position=0, next i 
Run Code Online (Sandbox Code Playgroud)

我是新手,并试图在VB excel上面做下面的代码(问题是粗体):谢谢

Ton*_*ore 7

无法更正所有代码,因为您不清楚自己要做什么.但以下可能会给你一个开始.

最好声明变量并指定其类型:

Dim i As Integer
Dim j As Integer
Dim max As Integer
Dim max1 As Integer
Dim min As Integer
Dim min1 As Integer
Dim Position As Integer
Run Code Online (Sandbox Code Playgroud)

我更喜欢按字母顺序声明它们,但这不是必需的.

你需要:

  min = 1000
  min1 = 1000
  max = 0
  max1 = 0
  Position = 0
Run Code Online (Sandbox Code Playgroud)

有以下错误Set min=min1=1000, max=max1=position=0:

  • Set仅用于对象.
  • 您不能用逗号分隔语句.
  • 在某些语言中min=min1=1000意味着min1=1000, min=min1但在VBA中它意味着:

    If min1=1000 Then
      min=True
    Else
      min=False
    End if 
    
    Run Code Online (Sandbox Code Playgroud)

DoFor语句末尾没有.所以:

    For i = 2 To 10
Run Code Online (Sandbox Code Playgroud)

MIN和MAX是工作表函数.要在VBA中使用,您必须说它们是工作表函数.VBA中的语句末尾没有分号.您已在MIN函数中使用了j但尚未设置其值.

我无法分辨作为MIN和MAX参数的值的位置.

如果位置在当前工作表中,您需要以下内容:

With ActiveSheet
  min = Application.WorksheetFunction.min(.Range("B16:F16"))
End With
Run Code Online (Sandbox Code Playgroud)

或者像是:

With ActiveSheet
  min = Application.WorksheetFunction.min(.Range(.Cells(i,j),.Cells(i+5,j)))
End With
Run Code Online (Sandbox Code Playgroud)

在阵列上使用MIN和MAX函数是可能的,但我知道无法选择数组的一部分.

希望这会给你一个开始.

  • +1花时间回答这样一个模棱两可的问题:) (2认同)