4

Спектр, который я использую в комплекте с 10000 точек данных

Я своего рода студент-химик, и у меня часто бывают случаи, когда мне нужно найти несколько высот пика (как видно на прилагаемой картинке). Кажется, что был бы способ найти значение y каждого из этих пиков в данном x и распечатать эти значения как метки данных на графике и в различных ячейках, но я не могу понять это. Я считаю, что с помощью:

=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

Даст что-то похожее на это:

Что я хотел бы сделать:

  • Получите те метки, которые говорят "max", чтобы сказать фактические значения, предпочтительно значения x и y, но только y также работает.

  • Сделать так, чтобы максимальные значения появились в новом столбце, было бы действительно здорово. Чтобы уточнить, у меня есть 10000 пунктов и должно в итоге 40 пиков. Я хотел бы получить гипотетический столбец D для заполнения с этими 40 максимальными значениями.

  • Наконец, поскольку существует 10000 значений, мне нужно найти способ отфильтровать значения, которые находятся ниже желаемой высоты пика (на первом рисунке).

Как я могу достичь вышеуказанного?

2 ответа2

1

Чтобы метки отображали фактические значения, просто измените формулу, чтобы отобразить значения вместо текста "max".

Ваша формула в настоящее время, кажется,

=if(and(c4>0,C5<0),"max","")

Измените это на

=if(and(c4>0,C5<0),A4&","&B4,"")

Два других пункта вашего вопроса не ясны. Отредактируйте свой вопрос, чтобы объяснить более подробно.

0

Вы также можете решить проблему без VBA и только с 3 столбцами, например:

Предполагая, что ваши исходные столбцы A и B, используйте эту формулу в вашем столбце C

=IFERROR(IF(AND(SLOPE(B1:B2,A1:A2)>0,B2>$C$1),B2,NA()),NA()) где $ C $ 1 = требуемая высота пика.

Оболочка IFERROR позволяет вам заполнить весь столбец, а Excel преобразует любые ошибки из первых двух строк (пустых в вашем примере) в # N/A, который будет игнорироваться в диаграмме. Кроме того, вы можете оставить обертку выключенной и начать столбцы на несколько строк вниз, как в исходном примере.

Затем создайте диаграмму XY/Scatter с двумя рядами данных.

  1. Первый ряд данных использует столбцы A и B для своих координат XY, отформатированных линиями, но без маркеров данных.
  2. Второй ряд данных использует столбцы A & C для своих координат XY, отформатированных с помощью маркеров данных, но без строк. Excel игнорирует все ваши значения # N/A при построении маркеров данных.
  3. Добавьте метки данных во вторую серию, отформатированную для включения значений X и Y. Excel также игнорирует все ваши значения # N/A при построении маркеров данных.

Выделите локальный максимум

  1. Я также добавил дополнительную серию с одной точкой X = 0, Y = $ C $ 1 (желаемая высота пика), без форматирования линий или точек. Я добавил положительную горизонтальную полосу ошибок, которую я отформатировал пунктирной красной линией, чтобы показать минимальную желаемую высоту пика. Это также автоматически отрегулирует, если вы измените желаемое значение высоты пика.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .