надеюсь, что все хорошо!
Я разместил этот вопрос на MrExcel, но подумал, что он может набрать больше сил.
У меня возникла проблема, когда мне нужно было отфильтровать самое высокое значение, учитывая набор.
Этот набор был определен строками, равными друг другу. Для любого заданного значения lat / long / timestamp мне дается до пяти значений. Я использовал функцию, чтобы определить, какой элемент в каждом наборе имеет наибольшее значение. Это работает.
Функция:
=IF(F13=MAX(IF($A:$A=A13, $F:$F)), "Yes", "No")
Я хотел бы открыть каждый файл, а затем запустить скрипт. Итак, я написал VBA для автоматизации. Сначала сработало, потом начал замораживать мой блок. Я не уверен, почему.
Я вставил ссылку на тестовый файл ниже: Тестовый файл CSV Но также использовал скриншоты, чтобы обеспечить понимание без загрузки файла.
Обратите внимание на одни и те же метки времени, для каждой из которых я хочу получить наибольшее значение.
При нажатии F8 и переходе по коду , У меня будет следующее:
Это правильно, но когда я запускаю это как скрипт (без шагов), файл CSV мигает бесконечно.
Любая помощь будет принята с благодарностью. Код показан ниже.
Sub FilterRSRP_From_CSV()
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'switching off the alert button
ActiveSheet.Name = "OriginalData"
Range("I8").Select
Selection.FormulaArray = "=IF(RC[-3]=MAX(IF(C1=RC[-8], C6)), ""Yes"", ""No"")"
Selection.AutoFill Destination:=Range("I8:I30000"), Type:=xlFillDefault
Range("I8:I30000").Select
Columns("I:I").Select
Selection.AutoFilter
ActiveSheet.Range("$I$1:$I$30000").AutoFilter Field:=1, Criteria1:="Yes"
Cells.Select
Range("L19").Activate
Selection.Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Name = "FilteredData"
ActiveSheet.Paste
Application.CutCopyMode = False
Columns("I:I").Select
Selection.Delete Shift:=xlToLeft
Worksheets("OriginalData").Delete
ActiveWorkbook.Save
Workbooks.Close