Excel: способы отмены автоматической конвертации чисел в даты
- правка непосредственно в открытой программе Excel
- чтение файлов csv или txt без возможности записи значений в файл
- чтение файлов csv или txt при возможности записи значений в файл
Почему мы рассматриваем только формата csv/txt, ведь большинство работают в xls/xlsx форматах? В родных форматах Excel сохраняются свойства ячеек, столбцов, строк. Поэтому единожды задав правильно тип ячейки, можно уже не беспокоится, что при открытии неправильно что-то отобразится.
Практически все эффекты от способов, сделанные в открытой программе Excel, при сохранении в формат .csv и .txt потеряются. Поэтому при открытии опять будут даты вместо значений.
Excel: способы отмены автоматической конвертации чисел в даты — В коробке инженера
В том случае, если вам часто приходится прибегать к конвертированию большого объёма текстовых значений, то имеет смысл создать специальный макрос. Однако, предварительно нужно активировать эту функцию и включить отображение панели разработчика. Переходим к записи макроса:
Функции VBA для работы с датой и временем
В этом уроке мы рассмотрим основные функции VBA для работы с датой и временем. Зная эти функции Вы легко сможете выводить текущую дату и время, а также добавлять или отнимать от текущей даты нужное количество лет, или месяцев. То есть производить с датой, или временем элементарные математические операции: сложение и вычитание.
Работая с датой и временем, наиболее распространенными являются функции Date(), Time() и Now(). Именно они выводят текущую системную дату, текущее системное время, или текущую дату и время вместе.
Date() — возвращает текущую системную дату. Установить ее можно при помощи одноименного оператора, например, так:
Time() — возвращает текущее системное время
Now() — возвращает дату и время вместе.
DateAdd() — возможность добавить к дате указанное количество лет, кварталов, месяцев и так далее — вплоть до секунд. Интервалы(год, месяц и т.д.) указываются в текстовом формате. Список допустимых значений:
«yyyy» Год
«q» Квартал
«m» Месяц
«y» День года
«d» День
«w» День недели
«ww» Неделя
«h» Час
«n» Минута
«s» Секунда
Сам синтаксис обращения незамысловат. Сначала указываем интервал, затем сколько единиц добавить и самый последний аргумент — к какой дате(включая время, кстати). Например, чтобы добавить 3 года к текущей дате-времени, надо записать функцию так:
Но что интереснее — можно не только добавлять, но и отнимать. Функция не изменится, мы просто должны записать кол-во добавляемых периодов со знаком минус. Отнимем три года от текущей даты-времени:
DateDiff() — возможность получить разницу между датами (опять таки в единицах от лет до секунд).
Первый аргумент определяет период времени, в котором необходимо вернуть разницу между датами. Допустимые значения:
«yyyy» Год
«q» Квартал
«m» Месяц
«y» День года
«d» День
«w» День недели
«ww» Неделя
«h» Час
«n» Минута
«s» Секунда
Наиболее полезна DateDiff при вычислении полных лет. Например, чтобы вычислить сколько лет на текущий момент человеку, в зависимости от даты рождения, можно использовать функцию так:
Без этой функции вычислить кол-во полных лет гораздо сложнее.
DatePart() — функция возвращает указанную часть даты (например, только год, только месяц или только день недели), на основании заданной даты. Часто применяется для получения номера недели для даты.
Первый аргумент — период времени. Принимаемые значения те же, что и для функции DateDiff(годы, месяцы, недели и т.д.)
Второй аргумент — непосредственно дата, часть которой необходимо получить:
DateSerial() — возможность создать значение даты, задавая месяц, год и день числовыми значениями:
DateValue()— делает то же, что и DateSerial(). Отличия — в формате принимаемых значений. Эта функция в качестве аргумента принимает дату в текстовом формате и преобразует её в формат даты:
Аналогичным образом (для времени) работают TimeSerial() и TimeValue()
MonthName() — возвращает имя месяца словами по его номеру. Возвращаемое значение зависит от региональных настроек. Если они русские, то вернется русское название месяца.
Timer() — возвращает количество секунд, прошедших с полуночи.
Как в Excel преобразовать число в текст
Если в ячейке в режиме редактирования сначала написать символ апострофа, а потом любой текст — то он автоматом станет текстом, а сам символ апострофа не будет виден в ячейке. При редактировании символ отображается.
Запись значения в ячейку
Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.
Пример 8: Записать в ячейку A1 активного листа значение 123,45
Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года
В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.
Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.
Инструмент «Текст столбцами»
- Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.