5个值的数组中的数组索引中位数

时间:2019-05-31 06:20:21

标签: excel vba

我在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?

谢谢!

1 个答案:

答案 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数组的索引值。

希望这会有所帮助!