Debbieには、多くの日付が含まれているワークシートがあります。データを日付と連結するには、日付を含む各セルを編集し、日付の前にアポストロフィを追加する必要があります。彼女はこれを行う簡単な方法があるかどうか疑問に思います。彼女は行を強調表示してテキストとしてフォーマットしようとしましたが、うまくいきませんでした。

デビーが行っている手作業を自動化したい場合は、マクロを使用して行うことができます。以下は、選択したセルを自動的にテキストに変換し、日付をセルに戻します。

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

テキストをセルに戻すときは、.Valueプロパティの代わりに.Value2プロパティを使用することに注意してください。これは、Excelが誤ってテキストを日付値に変換し直さないようにするために行われます。とにかくそれを行うべきではありませんが、.Value2プロパティはDateデータ型をサポートしていないため、潜在的な変換は本質的に排除されます。

また、マクロは、日付が含まれていない場合でも、選択したものをすべて変換することに注意してください。実行する前に、日付を含むセルのみを選択していることを確認する必要があります。

もちろん、Debbieがやろうとしていることを実行する最も簡単な方法は、TEXTワークシート関数を使用することです。たとえば、セルA1に日付が含まれているとします。別のセルで、日付の前に「締め切りは」という単語を入れたいと思いました。次のような式でそれを行うことができます:

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

TEXT関数には、変換するセル(この場合はA1)と変換に使用するパターン( “mmmm d、yyyy”)の2つのパラメーターが必要であることに注意してください。セルA1に2016年6月25日のような日付が含まれている場合、数式は次を返します。

The deadline is June 25, 2016

引用符で囲んで指定するパターンは、セルのカスタム形式を定義する際に使用するパターンに非常に厳密に従います。たとえば、「mmm」は3文字の月名を返し、「mmmm」は

を返します。完全にスペルアウトされた月の名前を返します。パターンで使用するコードは他のExcelTipsでカバーされていますが、ウィキペディアでExcelが使用するものに便利に対応するコードの便利な要約も見つけることができます:

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

このアプローチに関する興味深い点は、セルA1の日付がどのようにフォーマットされているかは実際には問題ではないということです。 TEXTを使用する場合、Excelが日付を格納するために使用する基になるシリアル番号に依存し、日付を含むセルの書式設定に関係なく、指定したパターンに従って書式設定します。

もちろん、テキストに直接変換したい場合は、日付と何も連結する必要はありません。この場合、TEXT関数を単独で使用します:

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

TEXT関数は、本質的に、厳密にテキスト値を返します。

注:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(13450)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。