找到多个局部最大值并将数据标签放置在相应的图表上

Nic*_*don 5 vba charts microsoft-excel

我正在使用的频谱包含 10,000 个数据点

在此输入图像描述

我是一名化学学生,经常遇到需要找到多个峰高的情况(如附图所示)。似乎有一种方法可以找到给定 x 处每个峰值的 y 值,并将这些值作为数据标签打印在图表和各个单元格中,但我无法弄清楚。我相信使用:

=IF(AND(C4>C3,C4>C5),"Local maxima","")

随着:

Sub CustomLabels()

   Dim i, myCount, pt
   ActiveSheet.ChartObjects("myChart").Activate
   myCount = ActiveChart.SeriesCollection(1).Points.Count

   For i = 1 To myCount
       ActiveChart.SeriesCollection(1).Points(i).ApplyDataLabels
       ActiveChart.SeriesCollection(1).Points(i).DataLabel.Text = Range("D" & i + 1).Value
   Next i

End Sub
Run Code Online (Sandbox Code Playgroud)

将产生如下所示的结果:

在此输入图像描述

我想做的事:

  • 使用那些标有“max”的标签来表示实际值,最好是 x 和 y 值,但也可以只使用 y。

  • 使最大值出现在新列中会非常棒。澄清一下,我有 10000 点,最终应该有 40 个峰值。我想要一个假设的 D 列来填充这 40 个最大值。

  • 最后,由于有 10000 个值,我需要找到一种方法来过滤掉低于我所需峰值高度的值(在第一张图片中)。

我怎样才能实现上述目标?

tey*_*lyn 1

要使标签显示实际值,只需更改公式以显示值而不是文本“max”。

您的公式目前似乎是

=if(and(c4>0,C5<0),"max","")
Run Code Online (Sandbox Code Playgroud)

将其更改为

=if(and(c4>0,C5<0),A4&","&B4,"")
Run Code Online (Sandbox Code Playgroud)

你的问题的另外两个要点不清楚。编辑您的问题以更详细地解释。