我在编程过程中需要一些帮助,而不是程序本身(如果代码可用,那么这将更好!)。我有一个包含3列(ID,CS,部分)的电子表格,我正在尝试设置用户表单,如果将ID和CS指定为输入,则最接近的值集将返回一个部分(或多个部分,具有接近的ID和CS值)例如,数据是:
ID ///的 CS ///的部分
10 /// 4.2 /// PN1
12 /// 5.7 /// PN038
103.43 /// 5.7 /// PN99
用户输入ID = 11.27,CS = 4,程序返回PN1,因为这是“最接近的”组合。
我试图通过循环遍历所有CS来自己设置它并找到一个刚好高于和低于所需值的那个并且确切地如果它存在于数据中,那么这些CS的ID就像CS一样被检查通过查看上面的ID,正好在下面并且确切地存在,然后将所有9个值输出到列表框中,然而,这变得非常混乱和混乱,因此,我正在寻找更优雅的解决方案来解决这个问题。
答案 0 :(得分:1)
Sub test()
'leastDeviation changed to 4447 as its maximum value is 4446. (61.75*8^2+494)
leastDeviation = 4447
lastRow = Range("A" & Rows.Count).End(xlUp).Row
For rowCheck = 1 To lastRow
'squared to eliminate sign
deviation = 61.75 * (inputID - Cells(rowCheck, "A")) ^ 2 + (inputCS - Cells(rowCheck, "B")) ^ 2
If deviation < leastDeviation Then
closest = rowCheck
End If
Next rowCheck
closestPart = Cells(closest, "C")
End Sub`