我在Excel VBA中有一个由5个数字组成的数组。
每个数组索引号是x坐标,每个索引处的数组值是Y坐标/值。我试图根据数组中的y值在数组中找到“中位数” x坐标。
示例1:
Array(1) = 1, Array(2) = 0, Array(3) = 1, Array(4) = 1, Array(5) = 2
我设想x坐标中值将是(四舍五入后的)索引4-请问Excel中是否有函数可以支持确定该值或某些建议的代码?
示例2:
Array(1) = 7, Array(2) = 1, Array(3) = 4, Array(4) = 7, Array(5) = 1
我设想x坐标中值将是(舍入后)索引3?
示例3:
Array(1) = 1, Array(2) = 0, Array(3) = 0, Array(4) = 0, Array(5) = 6
我设想(四舍五入后)x坐标中位数为5?
示例4:
Array(1) = 5, Array(2) = 0, Array(3) = 7, Array(4) = 0, Array(5) = 6
我设想x坐标中值将是(舍入后)索引3?
谢谢!
答案 0 :(得分:0)
我认为您上面的定义不是准确的描述,即x和y坐标。
尽管如此,您正在处理一维数组,并且试图在其中查找中值。因此,通过中位数的定义,您需要按数字顺序重新组织数组,并找到将数组分为“上”和“下”一半的数字。建立此索引后,您可以通过原始索引值(按定义定义x x)引用此数字,也可以通过新索引值引用该数字。
为清楚起见,让我们看一下上面的第一个示例。
上面的示例1:
Array(1) = 1, Array(2) = 0, Array(3) = 1, Array(4) = 1, Array(5) = 2
因此:
Array = Array(1, 0, 1, 1, 2)
已重新排序:
Array(0, 1, 1, 1, 2)
从上面可以看出,唯一需要进行的转换是原始索引1和2需要重新排序才能实现此目的。如果这是您选择的路线,则索引3(x坐标)将是数组中值的中值索引。
最后,我认为您的中位数将取决于a)您从无序到有序的转换,以及b)NEW数组的索引值。
希望这会有所帮助!