Функции МИН и ДМИН

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Brat2005
Сообщения: 61
Зарегистрирован: 26 сен 2005, 14:33

Пожскажите, кто сталкивался с такой проблемой...

Функции "МИН" и "ДМИН", если в диапазоне указывать ячейки содержащие даты возвращают "0" (ноль), если указан формат ячейки в которую введена одна из этих функций как общий, и возвращают "0.1" если формат ячейки указан как дата?

Почему так может быть?

Как сделать так, чтобы из диапазана дат выбиралась нименьшая/наибольшая дата и результатом была дата?
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Что касается стандартной функции рабочего листа =МИН(), то она справляется со своими обязанностями и возвращает минимальную дату. Однако, если даты будут представлять из себя текст (например в случае, если даты были получены с использованием стандартной функции рабочего листа =ТЕКСТ(), которая конечно же возвращает текст), то =МИН() действительно возвратит 0.

Для того, чтобы стандартная функция рабочего листа =МИН() возвратила минимальную дату, представленную в виде текста можно использовать следующую формулу массива {=МИН(ДАТАЗНАЧ(A1:A100))}
Avsha
Сообщения: 665
Зарегистрирован: 08 сен 2005, 13:47
Откуда: KZ

Прошу прощения, что вторгся своим вопросом в вопрос Brat2005,
но довольно удобный случай, расширить вопрос.

Можно ли в коде VBA вызывать (использовать) стандартные функции Excel, например ту же МИН() ?
pashulka
Сообщения: 831
Зарегистрирован: 24 ноя 2004, 03:46
Контактная информация:

Можно, вот несколько вариантов :

Код: Выделить всё

iResult = Application.Min(Range("A1:A100"))

Код: Выделить всё

iResult = WorksheetFunction.Min(Range("A1:A100"))
iResult = Excel.WorksheetFunction.Min(Range("A1:A100"))
iResult = Application.WorksheetFunction.Min([A1:A100])

Код: Выделить всё

iResult = Evaluate("Min(A1:A100)")
iResult = Excel.Evaluate("Min(A1:A100)")
iResult = Application.Evaluate("Min(A1:A100)")
Последний вариант можно использовать для расчёта формул, представленных в виде текста. Причём, метод Evaluate может работать даже с формулами массива. Именно эту возможность я использовал в Вашем топике, для подсчёта количества символов в выделенном диапазоне.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

А полный перечень соответствия русских названий функций листа и методов класса WorkSheetFunction можно найти в файле FUNCS.XLS. Его типичное местоположение - C:\Program Files\Microsoft Office\Office\1049
Ответить