Добрый день! Сразу скажу, в плане работы с экселем я полный новичек, но мне срочно необходимо решить одну задачу. Имеется таблица, в которой два столбца и большое количество строк (почти 5000). Данные экспортированы из программы Nonlin (программа по расчету землетрясений), и представляют собой значения для построения спектра Фурье, и меньшее количество значений взять оттуда невозможно. Проблема в том, что для построении графика, значений слишком много, получается каша. Пока что, самым разумным решением мне кажется удалить все значения кроме экстремумов. То есть по условию, если в предыдущей строке значение меньше текущего, а в следующей больше, то текущая строка удаляется. Но как реализовать это, я понятия не имею. Если есть другие идеи, с радостью выслушаю. В качестве примера прилагаю обрезанную таблицу, оставил всего 100 строк.
Добрый день! Сразу скажу, в плане работы с экселем я полный новичек, но мне срочно необходимо решить одну задачу. Имеется таблица, в которой два столбца и большое количество строк (почти 5000). Данные экспортированы из программы Nonlin (программа по расчету землетрясений), и представляют собой значения для построения спектра Фурье, и меньшее количество значений взять оттуда невозможно. Проблема в том, что для построении графика, значений слишком много, получается каша. Пока что, самым разумным решением мне кажется удалить все значения кроме экстремумов. То есть по условию, если в предыдущей строке значение меньше текущего, а в следующей больше, то текущая строка удаляется. Но как реализовать это, я понятия не имею. Если есть другие идеи, с радостью выслушаю. В качестве примера прилагаю обрезанную таблицу, оставил всего 100 строк.Vanolium
если в предыдущей строке значение меньше текущего, а в следующей больше, то текущая строка удаляется
Можно так попробовать (для значений в столбце "А"):
[vba]
Код
Sub Del_Rows_() Dim lR As Long Dim lR1 As Long Dim lCountR As Long lCountR = Cells(Rows.Count, 1).End(xlUp).Row
For lR = 2 To lCountR For lR1 = 3 To lCountR If Cells(lR1, 1).Value > Cells(lR1 - 1, 1).Value And Cells(lR1, 1).Value < Cells(lR1 + 1, 1).Value Then Rows(lR1).Delete Shift:=xlUp End If Next lR1 Next lR End Sub
если в предыдущей строке значение меньше текущего, а в следующей больше, то текущая строка удаляется
Можно так попробовать (для значений в столбце "А"):
[vba]
Код
Sub Del_Rows_() Dim lR As Long Dim lR1 As Long Dim lCountR As Long lCountR = Cells(Rows.Count, 1).End(xlUp).Row
For lR = 2 To lCountR For lR1 = 3 To lCountR If Cells(lR1, 1).Value > Cells(lR1 - 1, 1).Value And Cells(lR1, 1).Value < Cells(lR1 + 1, 1).Value Then Rows(lR1).Delete Shift:=xlUp End If Next lR1 Next lR End Sub