Для петель VBA. Программа Macro Excel

У меня проблема с моим проектом с использованием VBA. У меня есть этот столбец с тысячами строк.

И эти столбцы имеют значения, такие как 0.05, 1.3 т. Д., А также имеют сложные значения с значком < like <0.05, <0.02 что является моей реальной проблемой. Я хочу использовать If Else или Looping для этого решения. Но я не знаю, как это сделать. Я новичок в VBA macro excel.

То, что я хочу сделать из этих строк, – это если Macro обнаружит значение, которое <будет автоматически разделено на 2, поэтому у меня не будет сложных значений для получения максимального и минимального значения для этих строк.

Edit1: Загруженное изображение

образец изображения

Надеюсь, вы поймете мою мысль по этому поводу. Извините за мой английский. Спасибо за вашу помощь.

Вот более быстрый способ использования Autofilter . Использование Autofilter гарантирует, что вам не придется перебирать каждую ячейку.

Пример скриншота :

введите описание изображения здесь

Код :

 Sub Sample() Dim ws As Worksheet Dim rng As Range, aCell As Range, fltrdRng As Range Dim LRow As Long '~~> Change this to the relevant sheet Set ws = ThisWorkbook.Sheets("Sheet1") With ws '~~> Remove any filters .AutoFilterMode = False '~~> Get the last row of Col H where your data is LRow = .Range("H" & .Rows.Count).End(xlUp).Row '~~> Set your range Set rng = .Range("H1:H" & LRow) With rng .AutoFilter Field:=1, Criteria1:="=<*" Set fltrdRng = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow End With If Not fltrdRng Is Nothing Then For Each aCell In fltrdRng.Cells If aCell.Row > LRow Then Exit For '~~> 8 is for Col H If aCell.Column = 8 Then aCell.Value = Replace(aCell.Value, "<", "") aCell.Value = Val(Trim(aCell.Value)) / 2 End If Next aCell End If '~~> Remove any filters .AutoFilterMode = False End With End Sub 

Попробуйте это:

 Sub RemoveComplicatedValues() Dim rng As Range, cel As Range Dim x Set rng = Range("H2", Range("H" & Rows.Count).End(xlUp).Address) For Each cel In rng If InStr(1, cel, "<") <> 0 Then x = CSng(Split(cel, "<")(UBound(Split(cel, "<")))) cel = x / 2 End If Next End Sub 

Вы также можете полностью квалифицировать свою Workbook и Sheet если хотите.
Надеюсь это поможет.

  • добавить значение, если цикл не отображает значение в пределах диапазона
  • перейти на следующую итерацию цикла в excel vba
  • Исправить ошибку IsNumeric Loop?
  • Диапазон возврата основан на поиске петли в отдельной книге
  • Python: Excel для Web в PDF
  • VBA: Прокрутите критерии в фильтре Excel?
  • Цитирование всех активных рабочих листов
  • Диапазон проверки VBA в разных столбцах
  • Посмотрите на колонку A, совпадение с столбцом E, скопируйте столбец B в столбец F
  • Есть ли лучшая альтернатива, чем цикл, чтобы сократить время обработки?
  • Петля для прохождения каждого рабочего листа в рабочей книге
  • Давайте будем гением компьютера.