Billは、元々他のアプリケーションで作成されたデータをExcelにインポートするという課題に直面しています。問題は、データに多くの日付が含まれているが、Excelが理解できない形式になっていることです。たとえば、日付は01.15.11または1.15.2011の形式である場合があり、どちらもExcelでは日付として扱われません。ビルは、非標準の日付をExcelが理解できる日付形式に変換する方法を知りたがっています。

日付が地域の設定で使用するのと同じシーケンス形式である場合、変換は簡単です。たとえば、地域の設定で日付形式MDY(月、日、年)を使用していて、インポートする日付が同じ形式の場合、セルを選択してピリオドをスラッシュに置き換えるだけです。 Excelが2011年1月15日から2011年1月15日に変更されると、結果が日付として自動的に解析されます。

インポートする形式が地域の設定と一致しない場合は、日付を同じ形式にシャッフルする必要があります。たとえば、インポートする日付が01.10.11(2011年1月10日)で、システムがこれを2011年10月1日と解釈する場合、最も簡単な方法は、日付を個々のコンポーネントに分割してから元に戻すことです。一緒。次の一般的な手順に従ってください:

。日付列の右側に3つの空白列を挿入します。

。非標準の日付を含むセルを選択します。

。テキストから列へのウィザード([データ] | [テキストから列へ])を使用して、区切られたデータを選択し、区切り文字としてピリオドを使用します。ウィザードが完了すると、月、日、年を含む3つの列が表示されます。

。残りの空白の列に、次のような式を入力します。

。数式を日付の横にある他のセルにコピーします。

。作成した数式を含むセルを選択し、Ctrl + Cを押します。

。 [形式を選択して貼り付け]を使用して、数式を結果に変換します。 ([形式を選択して貼り付け]を使用する場合は、[値]オプションを選択します。)

。区切られた日付を含む3つの列を削除し、最終的な日付を含む列を保持します。

別の解決策は、単にマクロを使用して変換を行うことです。以下は、非標準の日付を取得し、適切にフォーマットされた日付値に変換するユーザー定義関数です。また、Text to Columnsテクニックで行われているように、マクロは月と日の位置を切り替えます。

Public Function Convert_Date(A As String) As Date     Dim K As Long     Dim K1 As Long     Dim K2 As Long

K = Len(A)

K1 = InStr(1, A, ".")

K2 = InStr(K1 + 1, A, ".")

Convert_Date = DateSerial(Val(Mid(A, K2 + 1, _       K - K2 + 1)), Val(Mid(A, K1 + 1, K2 - K1)), _       Val(Mid(A, 1, K1 - 1)))

End Function

注:

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

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

このヒント(3191)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。