Excel 如何计算图形中的峰值数-图形分析-

Excel 如何计算图形中的峰值数-图形分析-,excel,excel-formula,vba,Excel,Excel Formula,Vba,我有一条包含特定峰值的曲线,我想知道如何得到这些峰值的数量 样本数据: 0.10 76792 0.15 35578 0.20 44675 0.25 52723 0.30 27099 0.35 113931 0.40 111043 0.45 34312 0.50 101947 0.55 100824 0.60 20546 0.65 114430 0.70 113764 0.75 15713 0.80 8313

我有一条包含特定峰值的曲线,我想知道如何得到这些峰值的数量

样本数据:

0.10    76792
0.15    35578
0.20    44675
0.25    52723
0.30    27099
0.35    113931
0.40    111043
0.45    34312
0.50    101947
0.55    100824
0.60    20546
0.65    114430
0.70    113764
0.75    15713
0.80    83133
0.85    79754
0.90    17420
0.95    121094
1.00    117346
1.05    22841
1.10    95095
1.15    94999
1.20    18986
1.25    111226
1.30    106640
1.35    34781
1.40    66356
1.45    68706
1.50    21247
1.55    117604
1.60    114268
1.65    26292
1.70    88486
1.75    89841
1.80    49863
1.85    111938
第一列是X值,第二列是y值

我想写一个宏或公式,告诉我这个图中有多少个峰值


注意:这个图实际上是从matlab绘制和导出的,所以如果有一种方法我可以告诉我的代码从matlab为我做这件事,那也太好了

如果您的数据位于
A1:B36
中,则此公式
=SUMPRODUCT(--(B2:B35>B1:B34),--(B2:B35>B3:B36))

返回11个峰值

它检查

  • B2
    高于
    B1
    和B3,如果是,则将其视为峰值
  • 然后,如果
    B3
    高于
    B2
    B4
    ,则将其计为峰值,依此类推

[更新:添加了VBA请求]

Sub GetMax()
    Dim chr As ChartObject
    Dim chrSeries As Series
    Dim lngrow As Long
    On Error Resume Next
    Set chr = ActiveSheet.ChartObjects(1)
    Set chrSeries = chr.Chart.SeriesCollection(1)
    On Error GoTo 0

    If chrSeries Is Nothing Then Exit Sub

    For lngrow = 2 To UBound(chrSeries.Values) - 1
        If chrSeries.Values(lngrow) > chrSeries.Values(lngrow - 1) Then
            If chrSeries.Values(lngrow) > chrSeries.Values(lngrow + 1) Then
                chrSeries.Points(lngrow).ApplyDataLabels
                With chrSeries.Points(lngrow).DataLabel
                    .Position = xlLabelPositionCenter
                    .Border.Color = 1
                End With
            End If
        End If
    Next
End Sub

有相当多的matlab峰值检测器,看到了令人惊讶的答案,我真的很感激,但有没有可能让图形也像您的示例中那样指向峰值?我还有一个问题围绕着同一主题:)!,这个解释完全有道理,但是当我尝试Excel(2010)抱怨公式时。(公式错误)-有线索吗?