レイモンドの仕事では、日付をフォーマットして、かなり奇妙なフォーマットであると彼が信じているもので表示するようにする必要があります。たとえば、セルに10/20/19の日付が含まれている場合、引用符なしで「SU10 / 20」と表示する必要があります。 (SUは、曜日(この場合は日曜日)を2文字で表したものです。)レイモンドは、おそらくカスタム形式としてこれを行う方法があるかどうか疑問に思います。

カスタムフォーマットを使用してこれを正確に行う方法はありません。その理由は、2文字の曜日を作成できるカスタム形式のコードがないためです。カスタム形式で実行できる最も近いのは、3文字の曜日です。

ddd m/d

ただし、それでも3文字の曜日が大文字にならないため、少しずれています。

つまり、数式を使用してフォーマットされた日付を作成することになります。

セルA1に日付がある場合は、次の数式を使用できます。

=LEFT(UPPER(TEXT(A1,"ddd")), 2) & " " & TEXT(A1,"m/d")

これは、TEXT関数を使用して、最初に、UPPER式を使用して大文字に変換される3文字の曜日を返します。次に、LEFT関数を使用して、その平日の最初の2文字を取得し、それを月と日の組み合わせに追加します。これは、レイモンドが望んでいたものを正確に返します。

このアプローチを使用することの欠点は、数式によって返される日付がテキストであるということです。実際の日付ではありません。カスタム形式を使用できた場合、基になる日付値は変更されていません。

ただし、これは、このような奇数の日付形式の場合に当てはまります。

この潜在的な欠点があるため、非表示の列または非表示のワークシートにある場合でも、実際の日付を日付として保持することをお勧めします。

必要に応じて、フォーマットされた日付の文字列を返すマクロを作成することもできます。簡単なユーザー定義関数は次のとおりです。

Function FmtDate(d As Date) As String     Dim s As String

s = UCase(Left(WeekdayName(Weekday(d)), 2))

s = s & " " & Format(d, "m/d")

FmtDate = s End Sub

その後、ワークシートで次のように関数を使用できます。

=FmtDate(A1)

これは、日付がA1にあることを前提としており、関数はレイモンドが望むようにフォーマットされた日付文字列を返します。

注:

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

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

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