Vba excel преобразовать дату в текст в excel

Преобразование чисел, дат и строк в настраиваемый текстовый формат из кода VBA Excel с помощью функции Format. Синтаксис, параметры, символы, примеры.

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

Синтаксис и параметры

Format(Expression, [FormatExpression], [FirstDayOfWeek], [FirstWeekOfYear])

  • Expression – любое допустимое выражение (переменная), возвращающее числовое значение или строку (обязательный параметр).
  • FormatExpression – выражение формата, именованное или содержащее инструкции из специальных символов (необязательный параметр).
  • FirstDayOfWeek – константа, задающая первый день недели (необязательный параметр).
  • FirstWeekOfYear – константа, задающая первую неделю года (необязательный параметр).

Именованные выражения форматов

Именные форматы даты и времени

Имя формата Описание
General Date Стандартное отображение даты и времени в соответствии с параметрами системы.
Long Date Длинный формат даты.
Medium Date Средний формат даты.
Short Date Краткий формат даты.
Long Time Длинный формат времени.
Medium Time Средний формат времени.
Short Time Краткий формат времени.

Проверьте отображение даты и времени с использованием именованных форматов на вашем компьютере при помощи следующего кода VBA Excel:

Sub FormatDateTime()

MsgBox «General Date:  « & Format(Now, «General Date») & vbNewLine _

& vbNewLine & «Long Date:  « & Format(Now, «Long Date») & vbNewLine _

& vbNewLine & «Medium Date:  « & Format(Now, «Medium Date») & vbNewLine _

& vbNewLine & «Short Date:  « & Format(Now, «Short Date») & vbNewLine _

& vbNewLine & «Long Time:  « & Format(Now, «Long Time») & vbNewLine _

& vbNewLine & «Medium Time:  « & Format(Now, «Medium Time») & vbNewLine _

& vbNewLine & «Short Time:  « & Format(Now, «Short Time»)

End Sub

Скорее всего, результат будет таким:

Отображение даты и времени в соответствии с именованными форматами

Именованные форматы чисел

Имя формата Описание
General Number Стандартное отображение числа без знака разделителя групп разрядов.
Currency Денежный формат.
Fixed Отображение числа без знака разделителя групп разрядов с двумя цифрами после разделителя целой и дробной части.
Standard Отображение числа со знаком разделителя групп разрядов и с двумя цифрами после разделителя целой и дробной части.
Percent Процентный формат: отображение числа, умноженного на 100, со знаком процента (%), добавленного справа.
Scientific Отображение числа в экспоненциальном виде.
Yes/No Возвращается «Нет», если число равно 0, иначе отображается «Да».
True/False Возвращается «Ложь», если число равно 0, иначе отображается «Истина».
On/Off Возвращается «Выкл», если число равно 0, иначе отображается «Вкл».

Проверяем работу именованных форматов на числах 2641387.7381962 и 0 с помощью кода VBA Excel:

Sub FormatNumber()

Dim n As Double

n = 2641387.7381962

‘n = 0

MsgBox «Форматируемое число = « & n & vbNewLine _

& vbNewLine & «General Number:  « & Format(n, «General Number») & vbNewLine _

& vbNewLine & «Currency:  « & Format(n, «Currency») & vbNewLine _

& vbNewLine & «Fixed:  « & Format(n, «Fixed») & vbNewLine _

& vbNewLine & «Standard:  « & Format(n, «Standard») & vbNewLine _

& vbNewLine & «Percent:  « & Format(n, «Percent») & vbNewLine _

& vbNewLine & «Scientific:  « & Format(n, «Scientific») & vbNewLine _

& vbNewLine & «Yes/No:  « & Format(n, «Yes/No») & vbNewLine _

& vbNewLine & «True/False:  « & Format(n, «True/False») & vbNewLine _

& vbNewLine & «On/Off:  « & Format(n, «On/Off»)

End Sub

Получаем следующий результат:

Отображение числа в соответствии с именованными форматамиОтображение нуля в соответствии с именованными форматами числа

Вместо вопросительного знака в отображении числа в формате Currency, по идее, должен быть знак валюты (₽ или руб.).

Специальные символы для выражений форматов

Символы для форматов даты и времени

Символ Описание
Точка (.) Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца в виде числа.
Пробел Разделитель компонентов даты (день, месяц, год). Используется при отображении месяца прописью.
Двоеточие (:) Разделитель компонентов времени (часы, минуты, секунды).
d День в виде числа без нуля в начале (1–31).
dd День в виде числа с нулем в начале (01–31).
m Месяц в виде числа без нуля в начале (1–12). Если (m) следует после (h) или (hh), отображаются минуты (0–59).
mm Месяц в виде числа с нулем в начале (01–12). Если (mm) следует после (h) или (hh), отображаются минуты (00–59).
mmm Месяц прописью в сокращенном виде (янв–дек).
mmmm Полное название месяца (январь–декабрь).
y День года в виде числа (1–366).
yy Год в виде 2-значного числа (00–99).
yyyy Год в виде 4-значного числа (1900–9999).
h Часы в виде числа без нуля в начале (0–23).
hh Часы в виде числа с нулем в начале (00–23).
n (m) Минуты в виде числа без нуля в начале (0–59).
nn (mm) Минуты в виде числа с нулем в начале (00–59).
s Секунды в виде числа без нуля в начале (0–59).
ss Секунды в виде числа с нулем в начале (00–59).

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

Примеры отображения даты с помощью разных по количеству наборов символа d:

Sub DataIsD()

MsgBox «d:  « & Format(Now, «d») & vbNewLine _

& vbNewLine & «dd:  « & Format(Now, «dd») & vbNewLine _

& vbNewLine & «ddd:  « & Format(Now, «ddd») & vbNewLine _

& vbNewLine & «dddd:  « & Format(Now, «dddd») & vbNewLine _

& vbNewLine & «ddddd:  « & Format(Now, «ddddd») & vbNewLine _

& vbNewLine & «dddddd:  « & Format(Now, «dddddd»)

End Sub

Форматы даты, полученные с помощью разных по количеству наборов символа d

Символы для числовых форматов

Символ Описание
Точка (.) Десятичный разделитель.
Запятая (,) Разделитель групп разрядов. В отображаемых числах заполняется пробелом.
(0) Заполнитель, который отображает цифру или ноль. Используется, когда нужны ведущие нули или нули в конце числа.
(#) Заполнитель, который отображает цифру или ничего не отображает. Используется, когда не нужны ведущие нули или нули в конце числа.
(%) Заполнитель процента. Выражение умножается на 100, а знак процента (%) вставляется на той позиции, где он указан в строке формата.
(E- E+ e- e+) Экспоненциальный формат.

Примеры использования символов в выражениях числовых форматов VBA Excel:

Sub FormatNumber2()

Dim n As Double

n = 2641387.7381962

‘n = 0.2397842

MsgBox «Форматируемое число = « & n & vbNewLine _

& vbNewLine & «0.##:  « & Format(n, «0.##») & vbNewLine _

& vbNewLine & «000.###:  « & Format(n, «000.###») & vbNewLine _

& vbNewLine & «#,###.###:  « & Format(n, «#,###.###») & vbNewLine _

& vbNewLine & «0 %:  « & Format(n, «0 %») & vbNewLine _

& vbNewLine & «0.### E-:  « & Format(n, «0.### E-«) & vbNewLine _

& vbNewLine & «0.### E+:  « & Format(n, «0.### E+»)

End Sub

Символы для текстовых форматов

Символ Описание
At-символ (@) Заполнитель для символов, отображающий знак или пробел.
Амперсанд (&) Заполнитель для символов, отображающий знак или ничего (пустая строка).
Меньше (<) Принудительный перевод всех буквенных символов в нижний регистр.
Больше (>) Принудительный перевод всех буквенных символов в верхний регистр.

Примеры использования символов в выражениях строковых форматов VBA Excel:

Sub FormatString()

MsgBox «Номер телефона:  « & Format(«1234567890», «+7 (@@@) @@@-@@-@@») & vbNewLine _

& vbNewLine & «Серия и номер паспорта:  « & Format(«1234567890», «&& && &&&&») & vbNewLine _

& vbNewLine & «Нижний регистр:  « & Format(«Нижний регистр», «<«) & vbNewLine _

& vbNewLine & «Верхний регистр: « & Format(«Верхний регистр», «>»)

End Sub

Результаты форматирования строк с помощью специальных символов для функции Format

Форматы для различных значений одного выражения

Различные форматы для разных числовых значений

В выражении формата для чисел предусмотрено от одного до четырех разделов, отделяемых друг от друга точкой с запятой. Отображаемая строка зависит от значения, возвращенного параметром Expression функции Format.

Количество разделов Результат форматирования
Один раздел Выражение формата применяется ко всем значениям.
Два раздела Первый раздел применяется к положительным значениям и нулям, второй – к отрицательным значениям.
Три раздела Первый раздел применяется к положительным значениям, второй – к отрицательным значениям, третий – к нулям.
Четыре раздела Первый раздел применяется к положительным значениям, второй – к отрицательным значениям, третий – к нулям, четвертый – к значениям Null.

Пример использования четырех разделов в выражении формата числовых значений:

Sub FormatDifferentValues()

MsgBox «Число 1234,5678:  « & _

Format(1234.5678, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _

& vbNewLine & vbNewLine & «Число -25:  « & _

Format(25, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _

& vbNewLine & vbNewLine & «Число 0:  « & _

Format(0, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null») _

& vbNewLine & vbNewLine & «Null:  « & _

Format(Null, «#,##0.00 руб.;Отрицательное число;Ноль рублей;Значение Null»)

End Sub

Различные форматы для разных строковых значений

В выражении формата для строк предусмотрено до двух разделов, отделяемых друг от друга точкой с запятой. Отображаемая строка зависит от текста, возвращенного параметром Expression функции Format.

Количество разделов Результат форматирования
Один раздел Выражение формата применяется ко всем строковым данным.
Два раздела Первый раздел применяется к строковым данным, второй – к значениям Null и пустым строкам («»).

Пример использования двух разделов в выражении формата строк:

Sub FormatString2()

MsgBox «Строка «Белка»:  « & _

Format(«Белка», «@;Пустая строка или Null») _

& vbNewLine & vbNewLine & «Пустая строка:  « & _

Format(«», «@;Пустая строка или Null») _

& vbNewLine & vbNewLine & «Строка «Null»:  « & _

Format(«Null», «@;Пустая строка или Null») _

& vbNewLine & vbNewLine & «Значение Null:  « & _

Format(Null, «@;Пустая строка или Null»)

End Sub

Каждая функция привнося выражение к определенному тип данных.

Синтаксис

CBool(

выражение

)

CByte(

выражение

)

CCur(

выражение

)

CDate(

выражение

)

CDbl(

выражение

)

CDec(

выражение

)

CInt(

выражение

)

CLng(

выражение

)

CSng(

выражение

)

CStr(

выражение

)

CVar(

выражение

)

Обязательный аргумент выражениеаргумент — это любое строковое выражение или числовое выражение.

Возвращаемые типы

Тип возвращаемого значения определяется по имени функции в соответствии со следующей таблицей:

Функция

Тип возвращаемого значения

Диапазон аргумента

выражение

CBool

Boolean

Любое допустимое строковое или числовое выражение.

CByte

Byte

От 0 до 255.

CCur

Currency

От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.

CDate

Date

Любое допустимое выражение даты.

CDbl

Double

От -1,79769313486231E308 до
-4,94065645841247E-324 для отрицательных значений и от 4,94065645841247E-324 до 1,79769313486232E308 для положительных.

CDec

Decimal

+/-79 228 162 514 264 337 593 543 950 335 для чисел без дробной части. Для чисел с 28 десятичными знаками допустимый диапазон составляет
+/-7,9228162514264337593543950335. Наименьшее допустимое ненулевое число — 0,0000000000000000000000000001.

CInt

Integer

От -32 768 до 32 767, дробная часть округляется.

CLng

Long

От -2 147 483 648 до 2 147 483 647, дробная часть округляется.

CSng

Single

От -3,402823E38 до -1,401298E-45 для отрицательных значений и от 1,401298E-45 до 3,402823E38 для положительных.

CStr

String

Результат, возвращаемый функцией CStr, зависит от аргумента выражение.

CVar

Variant

Тот же диапазон, что и для числов Double. Такой же диапазон, как и для строк для не числов.

Замечания

Если передаваемое функции выражение находится за пределами диапазона типа данных, в который оно преобразуется, возникает ошибка.

Как правило, функции преобразования типов используются в тексте программ для того, чтобы указать, что результатом той или иной операции должны стать данные определенного типа, а не типа, заданного по умолчанию. Например, с помощью функции CCur можно принудительно перейти к вычислениям в денежном формате в тех случаях, в которых обычно используются действия с числами с обычной точностью, двойной точностью или с целыми числами.

Функции преобразования типа данных следует использовать вместо функции Val для преобразования типов данных в приложениях, поддерживающих различные региональные стандарты. Например, при использовании функции CCur десятичные разделители, разделители групп разрядов и параметры денежных единиц распознаются в соответствии с языковыми и региональными параметрами компьютера.

Если дробная часть целого числа строго равна 0,5, функции CInt и CLng всегда округляют результат до ближайшего четного числа. Например, 0,5 округляется до 0, а 1,5 — до 2. В отличие от функций CInt и CLng, в функциях Fix и Int дробная часть не округляется, а отбрасывается. Кроме того, функции Fix и Int всегда возвращают значение того же типа, что и переданное им выражение.

Для определения возможности преобразования даты в дату или время используется функция IsDate. Функция CDate распознает литералы даты и времени, а также некоторые числа, которые находятся в диапазоне допустимых дат. При преобразовании числа в дату преобразуется целая часть числа. Дробная часть преобразуется во время суток, начиная с полуночи.

CDate распознает форматы даты в соответствии с языковые стандарты системным параметром. Правильный порядок дат, месяца и года может быть определен не в том формате, который не является распознаемой датой. Кроме того, длинный формат даты не распознается, если он также содержит строку дней недели.

Функция CVDate предназначена для обеспечения совместимости с предыдущими версиями Visual Basic. Синтаксис функции CVDate идентичен синтаксису функции CDate, однако функция CVDate возвращает не результат типа Date, а результат типа Variant с подтипом Date. Поскольку теперь реализован встроенный тип Date, необходимость в функции CVDate отпадает. Того же результата можно добиться, преобразовав выражение в тип Date и присвоив это значение переменной типа Variant. Этот способ позволяет преобразовать все прочие встроенные типы в эквивалентные им подтипы Variant.

Примечание:  Функция CDec не возвращает отдельный тип данных. Вместо этого она всегда возвращает результат типа Variant, значение которого преобразовано в подтип Decimal.

Примеры запросов


Выражение


Результаты:

SELECT SalePrice,FinalPrice,CBool(SalePrice>FinalPrice) AS Expr1 FROM productSales;

Возвращает значения «ЦенаПродажи», «ПоследняяЦена» и оценивает, превышает ли Цена конечная цена. Возвращает «-1», если истина, и «0», если ложь.

SELECT ProductID, CByte(Quantity) AS Expr1 FROM productSales;

Возвращает значение «ProductID», преобразует значения в поле «Количество» в формат «Количество» и отображает в столбце Expr1 значение «ProductID», преобразует значения в поле «Количество» в формат «Валюта» и отображает в столбце Expr1.

SELECT ProductID, CDate(DateofSale) AS Expr1 FROM productSales;

Возвращает значение «ProductID», преобразует значения поля DateofSale в формат Date и отображает значения в столбце Expr1.

SELECT ProductID, CDbl(Discount) AS Expr1 FROM productSales;

Возвращает значение «ProductID», преобразует значения в поле Discount в формат Double и отображает значения в столбце Expr1.

SELECT ProductID, CInt(Discount) AS Expr1 FROM productSales;

Возвращает значение «ProductID», преобразует значения в поле Discount в формат Integer и отображает значения в столбце Expr1.

SELECT ProductID, CLng(Discount) AS Expr1 FROM productSales;

Возвращает значение «ProductID», преобразует значения в поле Discount в формат Long и отображает в столбце Expr1.

SELECT ProductID, CSng(Discount) AS Expr1 FROM productSales;

Возвращает значение «ProductID», преобразует значения в поле «Скидка» в single format и отображает в столбце «Expr1».

SELECT ProductID, CStr(Discount) AS Expr1 FROM productSales;

Возвращает значение «ProductID», преобразует значения в поле Discount в строковом формате и отображает значения в столбце Expr1.

SELECT ProductID, CVar(Discount) AS Expr1 FROM productSales;

Возвращает значение «ProductID», преобразует значения в поле «Скидка» в значение Double для числных значений и String для не числных значений.

Примеры VBA

Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.

Функция CBool

Совет:  В Access 2010 и более поздних версиях есть построитель выражений с поддержкой IntelliSense, который помогает создавать выражения.

В этом примере функция CBool используется для преобразования выражения в тип Boolean. Если выражение разрешается в ненулевое значение, функция CBool возвращает значение True; в противном случае она возвращает значение False.

Dim A, B, Check
A = 5: B = 5 ' Initialize variables.
Check = CBool(A = B) ' Check contains True.
A = 0 ' Define variable.
Check = CBool(A) ' Check contains False.

Функция CByte

В этом примере функция CByte используется для преобразования выражения в тип Byte.

Dim MyDouble, MyByte
MyDouble = 125.5678 ' MyDouble is a Double.
MyByte = CByte(MyDouble) ' MyByte contains 126.

Функция CCur

В этом примере функция CCur используется для преобразования выражения в тип Currency.

Dim MyDouble, MyCurr
MyDouble = 543.214588 ' MyDouble is a Double.
MyCurr = CCur(MyDouble * 2)
' Convert result of MyDouble * 2 (1086.429176) to a
' Currency (1086.4292).

Функция CDate

В этом примере функция CDate используется для преобразования выражения в тип Date. Как правило, не рекомендуется определять дату и время в виде строк (как показано в этом примере). Вместо этого пользуйтесь литералами даты и времени, например #2/12/1969# и #4:45:23 PM#.

Dim MyDate, MyShortDate, MyTime, MyShortTime
MyDate = "February 12, 1969"
' Convert to Date data type.
MyShortDate = CDate(MyDate)
MyTime = "4:35:47 PM"
' Convert to Date data type.
MyShortTime = CDate(MyTime)

Функция CDbl

В этом примере функция CDbl используется для преобразования выражения в тип Double.

Dim MyCurr, MyDouble
MyCurr = CCur(234.456784)
' Convert result to a Double.
MyDouble = CDbl(MyCurr * 8.2 * 0.01)

Функция CDec

В этом примере функция CDec используется для преобразования выражения в тип Decimal.

Dim MyDecimal, MyCurr
MyCurr = 10000000.0587 ' MyCurr is a Currency.
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal.

Функция CInt

В этом примере функция CInt используется для преобразования выражения в тип Integer.

Dim MyDouble, MyInt
MyDouble = 2345.5678 ' MyDouble is a Double.
MyInt = CInt(MyDouble) ' MyInt contains 2346.

Функция CLng

В этом примере функция CLng используется для преобразования выражения в тип Long.

Dim MyVal1, MyVal2, MyLong1, MyLong2
MyVal1 = 25427.45
MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles.
MyLong1 = CLng(MyVal1)
' MyLong1 contains 25427.
MyLong2 = CLng(MyVal2)
' MyLong2 contains 25428.

Функция CSng

В этом примере функция CSng используется для преобразования выражения в тип Single.

Dim MyDouble1, MyDouble2, MySingle1, MySingle2
' MyDouble1, MyDouble2 are Doubles.
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555
MySingle1 = CSng(MyDouble1)
' MySingle1 contains 75.34211.
MySingle2 = CSng(MyDouble2)
' MySingle2 contains 75.34216.

Функция CStr

В этом примере функция CStr используется для преобразования выражения в тип String.

Dim MyDouble, MyString
MyDouble = 437.324 ' MyDouble is a Double.
MyString = CStr(MyDouble)
' MyString contains "437.324".

Функция CVar

В этом примере функция CVar используется для преобразования выражения в тип Variant.

Dim MyInt, MyVar
MyInt = 4534 ' MyInt is an Integer.
MyVar = CVar(MyInt & "000")
' MyVar contains the string 4534000.

Макрос преобразования даты в текст, и время в текст

romik85

Дата: Четверг, 16.01.2014, 09:36 |
Сообщение № 1

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

Добрый день, помогите плз с макросом.
данный макрос преобразует только дату в текстовое значение, но необходимо преобразовать и время в текстовое значение, но без добавления 0 в начало значения 9:00:01, т.е не должно быть после преобразования 09:00:01

[vba]

Код

Sub Текст()
For Each cell In Selection
cell.Formula = cell.Text
Next cell
MsgBox «готов»
End Sub

[/vba]

заранее спасибо!

К сообщению приложен файл:

2134187.xls
(30.5 Kb)

Сообщение отредактировал romik85Пятница, 17.01.2014, 01:31

 

Ответить

KuklP

Дата: Четверг, 16.01.2014, 13:50 |
Сообщение № 2

Группа: Проверенные

Ранг: Старожил

Сообщений: 2369


Репутация:

486

±

Замечаний:
0% ±


2003-2010

[vba]

Код

cell.value = format(cell,»h:mm:ss»)

[/vba]


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728

 

Ответить

romik85

Дата: Пятница, 17.01.2014, 00:56 |
Сообщение № 3

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

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

Сообщение отредактировал romik85Пятница, 17.01.2014, 01:25

 

Ответить

RAN

Дата: Пятница, 17.01.2014, 01:45 |
Сообщение № 4

Группа: Друзья

Ранг: Экселист

Сообщений: 5645

Ниче не понял.
Зачем что-то в текст превращать? Дата со временем и так сцепляется.

К сообщению приложен файл:

7938623.xls
(32.0 Kb)


Быть или не быть, вот в чем загвоздка!

 

Ответить

romik85

Дата: Пятница, 17.01.2014, 01:54 |
Сообщение № 5

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

03.06.2013 0,375023148148148 нет времени, + тоже выход, но хотелось бы макрос

Сообщение отредактировал romik85Пятница, 17.01.2014, 01:55

 

Ответить

Michael_S

Дата: Пятница, 17.01.2014, 01:57 |
Сообщение № 6

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016


[vba]

Код

Sub Текст()
Dim cell, a$
For Each cell In Selection
a = Format(cell, «h:mm:ss»)
cell.NumberFormat = «@»
cell.Value = a
Next cell
MsgBox «готов»
End S

[/vba]ub

 

Ответить

SkyPro

Дата: Пятница, 17.01.2014, 02:00 |
Сообщение № 7

Группа: Друзья

Ранг: Старожил

Сообщений: 1206


Репутация:

255

±

Замечаний:
0% ±


2010

Странная задача..
[vba]

Код

Function DateTimeToText$(dateRange As Range)
Dim rCell As Range
‘application.Volatile ‘раскомментировать, если нужен автопересчет функции.
For Each rCell In dateRange
     If rCell.Text <> «» Then
         DateTimeToText = DateTimeToText & rCell.Text & » »
     End If
Next
DateTimeToText = Left(DateTimeToText, Len(DateTimeToText) — 1)
End Function

[/vba]


skypro1111@gmail.com

 

Ответить

romik85

Дата: Пятница, 17.01.2014, 02:03 |
Сообщение № 8

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

спасибо работает, и еще такой вопрос, можно ли объединить в макросе преобразовании даты и времени, в разных ячейках, колонках в текст, а то дата получается 0:00:00

Сообщение отредактировал romik85Пятница, 17.01.2014, 02:07

 

Ответить

romik85

Дата: Пятница, 17.01.2014, 02:08 |
Сообщение № 9

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

Сообщение отредактировал romik85Пятница, 17.01.2014, 02:20

 

Ответить

Michael_S

Дата: Пятница, 17.01.2014, 02:17 |
Сообщение № 10

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

вопрос не понятен… если преобразовывать из двух ячеек в одну — то куда? Если в третью -то зачем макрос, можно формулой… типа такой

Код

=ТЕКСТ(RC1+RC2;»ДД.ММ.ГГГГ  ч:мм:сс»)

(между ГГГГ и чч столько пробелов, сколько нужно)

Сообщение отредактировал Michael_SПятница, 17.01.2014, 02:21

 

Ответить

romik85

Дата: Пятница, 17.01.2014, 02:20 |
Сообщение № 11

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

если преобразовывать из двух ячеек в одну — то куда?

«+» дает 1 пробел между данными, нужно 2, а лишние колонки тормозят работу( , затем файлы отдаются на загрузку

 

Ответить

Michael_S

Дата: Пятница, 17.01.2014, 02:23 |
Сообщение № 12

Группа: Друзья

Ранг: Старожил

Сообщений: 2012


Репутация:

373

±

Замечаний:
0% ±


Excel2016

…ставите между ГГГГ и чч столько пробелов, сколько нужно

 

Ответить

SkyPro

Дата: Пятница, 17.01.2014, 02:25 |
Сообщение № 13

Группа: Друзья

Ранг: Старожил

Сообщений: 1206


Репутация:

255

±

Замечаний:
0% ±


2010


эм.. а что мешает переделать?


skypro1111@gmail.com

 

Ответить

romik85

Дата: Пятница, 17.01.2014, 02:29 |
Сообщение № 14

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

ставите между ГГГГ и чч столько пробелов, сколько нужно

ммм, не дает больше 1 пробела, результат такой же, как и =A2+B2

Сообщение отредактировал romik85Пятница, 17.01.2014, 02:30

 

Ответить

romik85

Дата: Пятница, 17.01.2014, 02:30 |
Сообщение № 15

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013


знаний не хватает(
поэтому к вам и обратился)

Сообщение отредактировал romik85Пятница, 17.01.2014, 02:39

 

Ответить

SkyPro

Дата: Пятница, 17.01.2014, 02:44 |
Сообщение № 16

Группа: Друзья

Ранг: Старожил

Сообщений: 1206


Репутация:

255

±

Замечаний:
0% ±


2010

[vba]

Код

Sub datetext()
Dim rCell As Range, t$
For Each rCell In Selection
     t = rCell.Text
     rCell.NumberFormat = «@»
     rCell.Formula = t
Next
End Sub

[/vba]


skypro1111@gmail.com

 

Ответить

romik85

Дата: Пятница, 17.01.2014, 02:49 |
Сообщение № 17

Группа: Пользователи

Ранг: Новичок

Сообщений: 16


Репутация:

0

±

Замечаний:
20% ±


Excel 2013

SkyPro, то что надо, спасибо) ++++

тему прошу закрыть)

 

Ответить

I have a date column in EXCEL with the date in the format — 1/27/2019. I want to write a script in VBA to extract just the year portion (2019) and put it in another column.

Do I convert the Date into String first? And then split the String using

`Split(date_as_string, "/")

to get the year portion??

How can I convert the Date into String to achieve this? Any other approach to solve this problem is also appreciated.

Pᴇʜ's user avatar

Pᴇʜ

56k9 gold badges49 silver badges73 bronze badges

asked Jan 27, 2019 at 15:47

Krithika Raghavendran's user avatar

If your date column is in true date format then Excel YEAR Function can be used to return value of the year in another column. Date reflected in column in this case is in my system local date format. It may be different in your system but YEAR will work as per your date system.

year_snapshot

EDIT:
If you want to go for VBA then example of macro is:

Sub Year_Only()
    Dim yr As String
    yr = Year(Range("A1"))
    Range("B1").Value = yr
End Sub

year_vba

answered Jan 27, 2019 at 16:13

skkakkar's user avatar

Something like

Sub JustYear()
    Dim yr As Long
    yr = Split(Range("A1").Text, "/")(2)
    Range("B1").Value = yr
End Sub

enter image description here

answered Jan 27, 2019 at 15:51

Gary's Student's user avatar

Gary’s StudentGary’s Student

95.3k9 gold badges58 silver badges98 bronze badges

For text representing the year,

range("A1") = format(cdate(date_as_string), "yyyy")

To get a true number representing the year,

range("A1") = val(format(cdate(date_as_string), "yyyy"))

answered Jan 27, 2019 at 15:53

Just use the Year() function:

Option Explicit

Sub test()
    Dim yea As Integer
    Dim r As Range

    Set r = Range("a1")
    yea = year(r.Value)
    Debug.Print yea
End Sub

answered Jan 27, 2019 at 16:27

  • Remove From My Forums
  • Question

  • I would like to convert todays date into text or a whole number representing the date.  Example: 10/11/0 into 10-11-10 or 101110.  The purpose of this is to save a workbook as todays date with one click («name101110.xlsm»).  I have
    code that works to save but needs the user to provide the date.  Is there a way to convert the date to a usable format for file saving?

    thanks in advance

Answers

  • In VBA you can create a string variable in this format using:

    Dim sDate As String

    sDate = Format(Now(), «ddmmyy»)

    Hope that helps.

    • Marked as answer by

      Monday, October 18, 2010 9:33 AM

Понравилась статья? Поделить с друзьями:
  • Vba excel преобразование типов данных
  • Vba excel преобразование текста в дату
  • Vba excel преобразование даты в число
  • Vba excel преобразование даты в текст
  • Vba excel предыдущее значение ячейки