|
VBA 程序如下(注意:我假设你的数据是1列A,9列B,每列都是14行,当然9和14都可以改成其他大于1的整数。而且,假设你的数据在表格"Sheet1"中,A的数据在Excel表中B列,B1的数据在表中C列,。。。,B9在表中K列。A,B1-B9的各14个数据在Excel表中第2行至第15行列出。答案输出在第M列(最小的绝对值差的数值)和N列(达到最小绝对值差的B的编号):
Sub FindMinAbsDiff()
Dim EachRow As Long, EachIndexOfB As Long, A As Double, B As Double
Dim MinDiff As Double, MinIndex As Long
For EachRow = 1 To 14 '14 is number of rows, can change to any number
'---------for each row, now start to find the min difference
A = Sheets("Sheet1").Cells(EachRow + 1, 2).Value 'A in each row
B = Sheets("Sheet1").Cells(EachRow + 1, 3).Value 'B1 in each row
MinDiff = Abs(B - A)
MinIndex = 1
For EachIndexOfB = 2 To 9 'calculate for B2~B9 in each row
B = Sheets("Sheet1").Cells(EachRow + 1, EachIndexOfB + 2).Value
If MinDiff > Abs(B - A) Then
MinDiff = Abs(B - A)
MinIndex = EachIndexOfB
End If
Next EachIndexOfB
'---------or each row, start to output to Sheet1
Sheets("Sheet1").Cells(EachRow + 1, 13).Value = MinDiff
Sheets("Sheet1").Cells(EachRow + 1, 14).Value = MinIndex
Next EachRow
End Sub
|