【发布时间】:2017-03-29 23:10:45
【问题描述】:
我有一个系统,其中有一个来自汽车衡的数据列表,用于读取衡器上卡车的重量。该数据范围从 -30,000 磅左右(由于秤已去皮但无卡车)到 40,000 磅(带有满载和去皮卡车)。我的任务是确定通过卡车离开我们工厂的总重量。问题是有时只有几辆卡车离开我们的工厂,而其他十几辆卡车离开,重量略有不同。
这些权重的图形看起来像锯齿图案。它在很大程度上是一个负值(由于皮重),当卡车拉到秤上时,它很快达到大约零,然后慢慢增加到最终重量。达到最终重量后,随着卡车的驶离,重量很快又回到负值。
我关于如何解决这个问题的想法是寻找数据小于零的位置,并返回零之间传感器的最大重量。如果最大重量高于某个噪声过滤器值(例如 5000 磅),则将最大重量添加到某个计数器。从理论上讲,还不错,在实践中,有点超出我的能力。
到目前为止,这是我的代码,因为我知道到目前为止我需要展示我的努力。我建议忽略它,因为它通常只是在重新开始工作几天后开始失败。
Public Function TruckLoad(rngData As Range)
Dim intCount As Integer
intCount = 0
For Each cell In rngData
intCount = intCount + 1
Next cell
Dim n As Integer
n = 1
Dim x As Integer
x = 1
Dim arr() As Double
For i = 1 To intCount
If rngData(i, 1) < 0 Then
arr(n) = x
n = n + 1
x = x + 1
Else
x = x + 1
End If
Next
TruckLoad = arr(1)
End Function
如果有人可以就如何进行操作给我建议,那将非常有价值。我不是最基础的计算机程序员。
编辑:对不起,我一开始就应该这么说。我不能发布完整的原始样本数据,但我可以发布一张图表的照片。在一定程度上我不能公开发布(不是说你可以对数据做任何特别邪恶的事情,这是公司规则)。
www.imgur.com/a/LGQY9
【问题讨论】:
-
一些示例数据也会非常有用!
-
您好 Jethro,您能否发布一些示例数据,这对我们帮助您很有帮助。甚至可能是您正在使用的工作表的图片。您已经接近问题,因此您很容易概念化,但我们需要您提供更多帮助,以帮助您。
-
您是否正在查看不止一辆卡车的一系列连续数据,例如:
-4,-4,-3,-2,-3,-4,-4,-1,0,1,2,3,2,1,0,-4,-4,-3,-2,-3,-4,-4,-4,-4,-3,-2,-3,-4,-4,0,2,4,5,4,2,0- 而您只是在寻找3和5? -
罗宾,当机立断。基本上在低端有很多垃圾数据(我的像 -30,000 而你的像 -4,相同的差异)和顶部附近的一些好数据(40,000 和 5)。我需要求和每个离散“峰值”的最大值。在您的情况下,有 2 个峰值,一个最大为 3,一个最大为 5。我希望创建的函数将返回 8
标签: vba excel excel-2013