用VBA实现不同的列加上不同的值
时间:2011-08-06
来源:互联网
用VBA实现不同的列加上不同的值,详细说明见附件,求一段VBA代码,如果函数可以实现也可以,谢谢。
不同的列赋予不同的值.zip(6.38 KB)
附件

2011-8-6 20:31, 下载次数: 16
作者: kay520042 发布时间: 2011-08-06
有什么实际的应用例子吗?
你的要求象绕口令,而且有点乱,很难理解。
你的要求象绕口令,而且有点乱,很难理解。
作者: 蓝桥玄霜 发布时间: 2011-08-06
水平有限,按你的描述思路写的
复制内容到剪贴板
Dim arr, i%, mm%, a%, b%, c%, d%
arr = Range("d2", [h65536].End(3))
For i = 1 To UBound(arr)
a = Abs(arr(i, 5) - arr(i, 1))
b = Abs(arr(i, 5) - arr(i, 2))
c = Abs(arr(i, 5) - arr(i, 3))
d = Abs(arr(i, 5) - arr(i, 4))
mm = Application.Min(a, b, c, d)
If mm = a Then
Cells(i + 1, 9) = arr(i, 1) + 10
ElseIf mm = b Then
Cells(i + 1, 9) = arr(i, 2) + 20
ElseIf mm = c Then
Cells(i + 1, 9) = arr(i, 3) + 30
ElseIf mm = d Then
Cells(i + 1, 9) = arr(i, 4) + 40
End If
Next
End Sub
代码:
Sub aa()Dim arr, i%, mm%, a%, b%, c%, d%
arr = Range("d2", [h65536].End(3))
For i = 1 To UBound(arr)
a = Abs(arr(i, 5) - arr(i, 1))
b = Abs(arr(i, 5) - arr(i, 2))
c = Abs(arr(i, 5) - arr(i, 3))
d = Abs(arr(i, 5) - arr(i, 4))
mm = Application.Min(a, b, c, d)
If mm = a Then
Cells(i + 1, 9) = arr(i, 1) + 10
ElseIf mm = b Then
Cells(i + 1, 9) = arr(i, 2) + 20
ElseIf mm = c Then
Cells(i + 1, 9) = arr(i, 3) + 30
ElseIf mm = d Then
Cells(i + 1, 9) = arr(i, 4) + 40
End If
Next
End Sub
作者: flysum2008 发布时间: 2011-08-06
复制内容到剪贴板
Dim Arr, d As Object, i&, x(1 To 5) As Variant, j%
Set d = CreateObject("scripting.dictionary")
Arr = Range("d1").CurrentRegion
For i = 2 To UBound(Arr)
For j = 1 To 4
x(j) = Abs(Arr(i, j) - Arr(i, 5))
Next
x(5) = Application.WorksheetFunction.Small(Array(x(1), x(2), x(3), x(4)), 1)
For j = 1 To 4
If x(5) = x(j) Then
d(i - 2) = Arr(i, j) + 10 * j
End If
Next
[i2].Resize(d.Count) = Application.Transpose(d.items)
Next
End Sub
[ 本帖最后由 陈国华 于 2011-8-6 22:33 编辑 ] 代码:
Sub 结果()Dim Arr, d As Object, i&, x(1 To 5) As Variant, j%
Set d = CreateObject("scripting.dictionary")
Arr = Range("d1").CurrentRegion
For i = 2 To UBound(Arr)
For j = 1 To 4
x(j) = Abs(Arr(i, j) - Arr(i, 5))
Next
x(5) = Application.WorksheetFunction.Small(Array(x(1), x(2), x(3), x(4)), 1)
For j = 1 To 4
If x(5) = x(j) Then
d(i - 2) = Arr(i, j) + 10 * j
End If
Next
[i2].Resize(d.Count) = Application.Transpose(d.items)
Next
End Sub
作者: 陈国华 发布时间: 2011-08-06
谢谢lysum2008 ,你的代码实现了我所需要的功能,但是出现了一个问题,如果出现了两个相同的绝对值怎么办 ?
取第一次出现的吗??
取第一次出现的吗??
作者: kay520042 发布时间: 2011-08-06
你可以通过改数值的方法得到测试结果。比如数值2和数值3的绝对值一样,取数值2
作者: flysum2008 发布时间: 2011-08-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28