VBA怎么比较3个单元格数值的大小.如果,最大返回2,最小返回0,中间返回1,返回值在别的单元格中输出
展开全部
以下程序可以完成你的功能。
另外,程序可以完成任意个数字的排序序列输出,但前提是数字是输入在B12开始的行
楼上的程序对于3个数字比较固然可行,但是>3个数字以上的排序,用if写代码就会知道痛苦了。
Sub compare()
n = 3 '定义需要比较多少个数字
Dim b()
ReDim b(n)
For i = 1 To n Step 1
b(i) = Cells(12, i + 1)
Next i
'冒泡排序
For j = 1 To n Step 1
For k = 1 To n - j Step 1
If b(k) > b(k + 1) Then
n_temp = b(k + 1)
b(k + 1) = b(k)
b(k) = n_temp
End If
Next k
Next j
'确定序列
q = 1
Do While q <= n
For p = 1 To n Step 1
If Cells(12, q + 1) = b(p) Then
Cells(11, q + 1) = p - 1
Exit For
End If
Next
q = q + 1
Loop
End Sub
另外,程序可以完成任意个数字的排序序列输出,但前提是数字是输入在B12开始的行
楼上的程序对于3个数字比较固然可行,但是>3个数字以上的排序,用if写代码就会知道痛苦了。
Sub compare()
n = 3 '定义需要比较多少个数字
Dim b()
ReDim b(n)
For i = 1 To n Step 1
b(i) = Cells(12, i + 1)
Next i
'冒泡排序
For j = 1 To n Step 1
For k = 1 To n - j Step 1
If b(k) > b(k + 1) Then
n_temp = b(k + 1)
b(k + 1) = b(k)
b(k) = n_temp
End If
Next k
Next j
'确定序列
q = 1
Do While q <= n
For p = 1 To n Step 1
If Cells(12, q + 1) = b(p) Then
Cells(11, q + 1) = p - 1
Exit For
End If
Next
q = q + 1
Loop
End Sub
追问
如果,想改变的单元格怎么改啊。要在同一行的后边输出。输入B10,C10,D10 输出E10,F10,G10
展开全部
我编程水平很差,编的程序太差,不过还管用,对付能用
Sub 比较大小()
Dim i, j, k
i = Cells(12, 2)
j = Cells(12, 3)
k = Cells(12, 4)
If i > j Then
If i > k Then
Cells(11, 2) = 2
If j > k Then
Cells(11, 3) = 1
Cells(11, 4) = 0
Else
Cells(11, 3) = 0
Cells(11, 4) = 1
End If
Else
Cells(11, 4) = 2
Cells(11, 2) = 1
Cells(11, 3) = 0
End If
Else
If i > k Then
Cells(11, 3) = 2
Cells(11, 2) = 1
Cells(11, 4) = 0
Else
If j > k Then
Cells(11, 3) = 2
Cells(11, 4) = 1
Cells(11, 2) = 0
Else
Cells(11, 4) = 2
Cells(11, 3) = 1
Cells(11, 2) = 0
End If
End If
End If
End Sub
Sub 比较大小()
Dim i, j, k
i = Cells(12, 2)
j = Cells(12, 3)
k = Cells(12, 4)
If i > j Then
If i > k Then
Cells(11, 2) = 2
If j > k Then
Cells(11, 3) = 1
Cells(11, 4) = 0
Else
Cells(11, 3) = 0
Cells(11, 4) = 1
End If
Else
Cells(11, 4) = 2
Cells(11, 2) = 1
Cells(11, 3) = 0
End If
Else
If i > k Then
Cells(11, 3) = 2
Cells(11, 2) = 1
Cells(11, 4) = 0
Else
If j > k Then
Cells(11, 3) = 2
Cells(11, 4) = 1
Cells(11, 2) = 0
Else
Cells(11, 4) = 2
Cells(11, 3) = 1
Cells(11, 2) = 0
End If
End If
End If
End Sub
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在b11中输入公式:=SUMPRODUCT(($B$12:$D$12<B12)*($B$12:$D$12<B12))或=RANK(B12,$B$12:$D$12,1)-1,然后将公式向右拉到d11就行了啊,不用写vba,如果多几个数比较,将公式里面的数据范围改一下就行了啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比较3个数的
Sub cc()
arr = Range("b12:d12")
arr_max = Application.Max(arr)
arr_min = Application.Min(arr)
For i% = 1 To 3
If arr(1, i) = arr_max Then
arr(1, i) = 2
ElseIf arr(1, i) = arr_min Then
arr(1, i) = 0
Else
arr(1, i) = 1
End If
Next
[b11].Resize(1, 3) = arr
End Sub
Sub cc()
arr = Range("b12:d12")
arr_max = Application.Max(arr)
arr_min = Application.Min(arr)
For i% = 1 To 3
If arr(1, i) = arr_max Then
arr(1, i) = 2
ElseIf arr(1, i) = arr_min Then
arr(1, i) = 0
Else
arr(1, i) = 1
End If
Next
[b11].Resize(1, 3) = arr
End Sub
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询