Форум по VBA и MS Office

VBA, Excel => VBA, макросы в Excel => Тема начата: Посетитель от 16 июля 2024, 13:22

Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 13:22
Здравствуйте !
Подскажите, пожалуйста, не получается отфильтровать дробные значения.
В столбце цифр, записанных текстом нужно удалить строки со значением < 135.
Перевожу текст в числовой формат. Но фильтр не видит дробные числа, пропуская их.

Спойлер
Dim R As Long
    R = Cells(Rows.Count, 1).End(xlUp).Row ' Считается количество заполненных рядов
   
    With Range("F1:F" & R)
        .NumberFormat = "General"
        .Value = .Value
    End With                      ' Устанавливается числовой формат ячеек в столбце 5
   
         
   
    Range("F1:F" & R).AutoFilter Field:=1, Criteria1:="<135", Operator:=xlFilterValues
    ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete ' Удаляет выбранные фильтром строки
    Selection.AutoFilter  ' Фильтр снимается
[свернуть]

Пробовал переводить ещё раз в числовой формат .NumberFormat = "0", Но дробное значение (7,5) так и остаётся в столбце, хотя формат показывает числовой без десятичных знаков. И автофильтр снова пропускает эти строки с 7,5.
Замена запятой на точку тоже не дала результат, там начинает как-то связываться датами и дают несуществующие четырёхзначные числа.
Или как-то через Clnt возможно.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 13:40
У вас задача получается: перевести числа из текстового вида в числовой? С этим проблема?
Дробное число в ячейке не распознаётся как число? Зелёный треугольник ошибки есть?
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 13:45
Задача: удалить все строки по значению столбца меньше 135. Значения записаны текстом.
В столбце попадаются строки со значением 7,5.
Фильтр просто с текстом не работал. Когда я перевёл значения из текста в числовые, фильтр заработал, но пропускает значения дробные, а они меньше 135.
Зелёного треугольника ошибки нет.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 13:50
Можно так узнать, является ли дробное число числом.
Вставьте в любую ячейку формулу: =СУММ(A1). Вместо A1 укажите ячейку, в которой находится 7,5.
Если это текст, то формула вернёт 0, если число, то формула вернёт 7,5.
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 14:18
=СУММ(F3237)
В ячейке выдаётся #ИМЯ?
Слева от неё — оранжевый ромбик с восклицательным знаком, при наведении на который всплывает сообщение "Формула содержит нераспознанный текст"
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 14:20
У вас русские или английские формулы используются в Экселе?
Если английские, то вместо СУММ используйте SUM.
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 14:29
Русские.
SUM даёт такой же результат.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 14:34
Получается, что у вас не работает формула СУММ?
А другие функции работают? Когда-нибудь формулы использовали или ещё не приходилось?
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 14:46
Сумма не работает, может потому, что для неё нужны числа ? а там текст. Пробовал с другими ячейками = там где текст, не суммирует его, суммирует только числа. Кстати да, в левом верхнем углу всех ячеек столбца есть зелёный треугольник. Извиняюсь. Не сообразил вначале, что именно о нём вы спрашивали. Формулы работают и я использую формулы, только мало и однотипные.
Вот этот текст я и преобразовывал, чтобы автофильтр мог работать.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 14:50
У меня функция СУММ работает по-другому, чем у вас. Видимо зависит от версии Офиса.
В моей версии Офиса, если в ячейке нечисло, то ошибки нет, а записывается 0.
Вы смогли понять: 7,5 это текст или число?
Сейчас функция СУММ для 7,5 возвращает ошибку? А если вы вручную запишите в ячейку 7,5, то СУММ возвращает 7,5?
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 15:07
У меня версия LTSC профессиональный плюс 2021.
7,5 — это текст: так объясняет оранжевый ромбик, пояснения в нём и зелёный треугольник (апостроф) в углу.
Если вручную пишу 7,5 — =СУММ тоже не распознаёт его. Более того, если написать в двух соседних ячейках по числу, потом сделать автосумму в третьей ячейке (число) и это число вывести в любую пустую ячейку (=СУММА(адрес)), то тоже не распознает.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 15:33
Формат ячейки, в которой находится 7,5, какой: Общий, Числовой, Текстовый или другой?
Формат можно узнать так: щёлкните по ячейке правой кнопкой мыши - Формат ячеек... - вкладка Число.
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 15:37
Общий. Все ячейки в этом столбце такие (текст и общий формат).
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 15:42
У вас какая-то нестандартная ситуация. Если в ячейке сделать формат Общий и напечатать 7,5, то число должно стать числом и функция СУММ должна вернуть 7,5.
Вам нужно добиться, чтобы так было. Без этого двигаться дальше не надо.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 15:44
Если не сможете решить, то выложите файл на форуме. Удалите из него секретные данные перед выкладыванием.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 15:46
Создайте новый пустой эксель-файл, в ячейку вставьте 7,5, и вставьте формулу с СУММ. Работает формула с СУММ? Возвращает 7,5?
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 15:50
Столбец с числовыми значениями я сделал вот этим кодом

Спойлер
    Dim R As Long
    R = Cells(Rows.Count, 1).End(xlUp).Row ' Считается количество заполненных рядов
 
    With Range("F1:F" & R)
        .NumberFormat = "General"
        .Value = .Value
    End With                      ' Устанавливается числовой формат ячеек в столбце 5
[свернуть]

Ячейки проверял, стали числами. Но =СУММА(адрес) не работает ни в одной ячейке Экселя, независимо от того, текст в ячейке или число.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 15:52
Нужно писать не СУММА, а СУММ.
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 16:00
Да, так и писал. Это сейчас на автомате ошибся, извиняюсь.
В новом пустом эксель-файле то же самое, выдаёт нераспознанность текста.
То, что кодом исправлено на числа говорит ещё то, что числа по всему столбцу сместились к правому краю ячейки (текст отображается в начале ячейки).
Но, кстати, 7,5 числом не стало .... В этих ячейках 7,5 так и осталось расположено возле левой части.
Значит поэтому фильтр их пропускает.
Название: Автофильтр не работает с дробными числами
Отправлено: Администратор от 16 июля 2024, 16:03
Если СУММ вставить так: поставьте курсор под ячейку, в которой находится 7,5, - вкладка Главная - группа Редактирование - Сумма - нажмите Enter. Какая формула вставилась в ячейку?
Название: Автофильтр не работает с дробными числами
Отправлено: Посетитель от 16 июля 2024, 16:16
=СУММ(R[-3219]C:R[-1]C)