У меня есть ячейки с датами в Excel. Некоторые даты имеют дд-мм-гг (например, 20-01-15), другие просто имеют мм-гг (например, 01-15). Я хочу определить, какие ячейки имеют день, указанный пользователем.

Насколько я могу судить, это невозможно - когда пользователь не вводит день месяца, базовый объект даты Excel сохраняет первый день месяца. Однако день не отображается в ячейке, поэтому для этого должен быть флаг или параметр.

Если бы я мог извлечь отображаемый текст ячейки, то я мог бы проанализировать это, чтобы ответить на мой вопрос, но я не могу найти функцию рабочего листа для извлечения отображаемого текста ячейки без использования VBA.

3 ответа3

2

Если пользователь вводит дату, он может скрыть день, месяц или год путем форматирования. Но это только то, как отображается ячейка. Если, однако, вы смотрите в панели формул ; день будет виден

Если вас интересует только то, какой из двух форматов выбрал пользователь (а не фактический день месяца), используйте функцию рабочего листа = Cell().

0

Ваш вопрос немного двусмысленный. Я рассмотрю то, что я думаю, что вы спрашиваете.

Что хранится

Если вы вводите что-то, что Excel интерпретирует как дату, оно сохраняет это как дату, а не как фактическую строку символов, которая была введена. Дата хранится в виде числа, которое представляет количество дней с даты ссылки. Таким образом, сохраненное значение фактически является счетчиком дней, оно не содержит или не содержит день в зависимости от того, был ли он введен.

Все остальное (год, месяц, день месяца и т.д.) Является производным от него, и спецификация формата определяет, какие данные отображаются. Если введена дата месяца / года, единственный способ сохранить ее как дату, чтобы она была определенной датой, поэтому Excel принимает 1-е число месяца.

Запрос на ячейку бесполезен

Если Excel интерпретирует ввод как дату, фактический ввод больше не будет там анализироваться, чтобы определить, что набрал пользователь (поэтому функция для отображения текста ячейки не поможет).

Однако вы можете предположить, что было введено при определенных обстоятельствах. Я провел быстрый тест в Excel 2007 (я полагаю, что это поведение не изменилось в последующих версиях).

  • Если Excel назначит день месяца (потому что ни один не был введен), это будет 1-е число месяца. Если все даты для пользователя являются первыми месяца и если нет причин, по которым это всегда должно иметь место (т. Е. Даты не определены как всегда 1-ые), это будет указывать, что только месяц и год были введены.

    И наоборот, если какие-либо даты, отображаемые как месяц / год, содержат день, который не является 1-м (проверьте, ссылаясь на ячейку из другой ячейки и отобразив там мм / дд / гг), это будет означать, что пользователь ввел день, и он подавлено форматированием. Маловероятно, что пользователь будет вводить день только в даты, отличные от 1-го числа месяца.

  • Если ячейка предварительно отформатирована в формате даты, входные данные даты будут отображаться в этом формате. Если ячейка имеет общий формат, ввод даты будет отображаться в формате даты по умолчанию, который показывает тот же уровень информации. Так, например, когда я набрал 07/15 качестве ввода в ячейку общего формата, он отображал 15 июля; не идентичный тому, что я напечатал, но тот же уровень информации.

    Если ввод даты имеет смешанный формат, это будет означать, что ячейки не были предварительно отформатированы. Таким образом, даты, показывающие только месяц и год, могут быть введены как месяц и год.

0

Вы можете запретить Excel автоматически вставлять первый день месяца, отформатировав ячейку как текст. Это должно быть сделано до ввода данных.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .