Пошук декількох локальних максимумів і розміщення міток даних на відповідному графіку


4

Спектр, який я використовую, містить 10 000 точок даних

enter image description here

Я є студентом хімії сортів, і я часто мають випадки, коли мені потрібно знайти декілька висот піків (як показано на прикріпленому малюнку). Схоже, що існує спосіб знайти значення 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

Дасть щось, що виглядає так:

enter image description here

Що я хотів би зробити:

  • Отримати ті мітки, які говорять "max", щоб сказати фактичні значення, бажано x і y значення, але тільки y працює теж.

  • Зробити це так, щоб максимальні значення з'явилися в новому стовпці було б дійсно здорово. Для уточнення я маю 10000 балів і маю закінчити з 40 піками. Я хотів би отримати гіпотетичну колонку D для заповнення цих 40 максимальних значень.

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

Як я можу досягти зазначеного вище?

Відповіді:


1

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

Ваша формула наразі є

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

Змініть його на

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

Інші два пункти вашого запитання не зрозумілі. Редагуйте своє запитання, щоб пояснити його більш детально.


Думаю, я це зрозумів. Я не міг би цього зробити без тебе. Я просто використав: = IF (AND (C4> 0, C5 <0, B4> 0.318, A4> 2500, A4 & lt; 3200), A4 & amp; "," & B4, "")
Nicholas Brandon

Якщо це допомогло, позначте відповідь, як описано в розділі Тур
teylyn

0

Ви також можете вирішити проблему без VBA і лише з 3 стовпцями, наприклад:

Припускаючи оригінальні стовпці A & amp; 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 & amp; B для його XY координат, відформатованих лініями, але без маркерів даних.
  2. Друга серія даних використовує стовпці A & amp; C для його XY координат, відформатованих за допомогою маркерів даних, але без рядків. Excel ігнорує всі ваші # N / A значення при побудові маркерів даних.
  3. Додайте мітки даних до вашої другої серії, відформатовані для включення значень X і Y. Excel також ігнорує всі ваші # N / A значення при побудові маркерів даних.

Highlight local max

  1. Я також додав додаткову серію з однією точкою X = 0, Y = $ C $ 1 (бажана висота піку), без лінійного або точкового форматування. Я додав позитивну горизонтальну панель помилок, яку я відформатував за допомогою пунктирної червоної лінії, щоб показати мінімальну бажану висоту піку. Це також буде автоматично налаштовано, якщо ви зміните бажане значення висоти піку.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.