У Дебби есть рабочий лист с множеством дат. Чтобы связать данные с датами, ей нужно отредактировать каждую ячейку, содержащую дату, и добавить апостроф перед датой. Она задается вопросом, есть ли быстрый способ сделать это. Она попыталась выделить строку и отформатировать ее как текст, но это не сработало.

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

Sub DateToText()

Dim cell As Range     Dim sTemp As String

For Each cell In Selection         With cell             sTemp = .Text             .NumberFormat = "@"

.Value2 = sTemp         End With     Next cell End Sub

Обратите внимание на использование свойства .Value2 вместо свойства .Value при вставке текста обратно в ячейку. Это сделано для того, чтобы Excel случайно не преобразовал текст обратно в значение даты. В любом случае этого делать не следует, но свойство .Value2 не поддерживает тип данных Date, поэтому любое потенциальное преобразование по своей природе исключено.

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

Конечно, самый простой способ сделать то, что пытается сделать Дебби, — использовать функцию рабочего листа ТЕКСТ. Предположим, например, что ячейка A1 содержит дату. В другой ячейке вы хотели поставить перед датой слова «Крайний срок». Вы можете сделать это с помощью такой формулы:

="The deadline is " & TEXT(A1, "mmmm d, yyyy")

Обратите внимание, что для функции ТЕКСТ требуются два параметра: преобразовываемая ячейка (в данном случае A1) и шаблон для использования при преобразовании («мммм д, гггг»). Если ячейка A1 содержит дату, например 25.06.16, формула возвращает следующее:

The deadline is June 25, 2016

Шаблон, который вы указываете в кавычках, очень точно следует шаблонам, которые вы использовали бы при определении пользовательского формата для ячейки. Например, «ммм» возвращает трехзначное название месяца, а «мммм»

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

https://en.wikipedia.org/wiki/Date_format_by_country

Интересным моментом в отношении этого подхода является то, что на самом деле не имеет значения, как форматируется дата в ячейке A1. Когда вы используете ТЕКСТ, он полагается на базовый серийный номер, используемый Excel для хранения даты, а затем форматирует его в соответствии с указанным вами шаблоном — независимо от любого форматирования в ячейке, содержащей дату.

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

=TEXT(A1, "mmmm d, yyyy")

Функция ТЕКСТ по своей природе возвращает строго текстовое значение.

_Примечание: _

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

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (13450) применим к Microsoft Excel 2007, 2010, 2013 и 2016.