他のプログラムからExcelに情報をロードすることは珍しいことではありません。

たとえば、別のプログラムによって生成されたデータがあり、そのデータをExcelで分析したい場合があります。データをExcelにインポートすると、適切なデータ型を情報に割り当てることができ、一部のデータを解析して変換することもできます。

ただし、日付と時刻に関しては、すべてのプログラムがExcelが理解できる方法で話すわけではありません。たとえば、他のプログラムが「Mon Jan 10 14:33:03 2011」の形式で日付を保存している場合、Excelは日付を解析できないため、他の方法で変換を行う必要があります。

幸い、ほとんどのプログラムは、パターンに従った形式で日付と時刻を生成します。たとえば、「Mon Jan 10 14:33:03 2001」がすべての日付の後に続く形式を表すとすると、次の簡単な式を使用して変換を実行できます。

=DATEVALUE(MID(A1,9,2)&MID(A1,5,3)&RIGHT(A1,4)) + TIMEVALUE(MID(A1,12,8))

この数式は、外部の日付/時刻形式がセルA1にあることを前提としています。

Excelの日付/時刻形式のいずれかを使用して数式の結果をフォーマットするだけで、問題はありません。

必要に応じて、Text to Columns関数を使用して、外部の日付/時刻形式をその不可欠な部分に分割できます。

。日付/時刻の右側に4つの空の列があることを確認してください。

これは、Excelが日付/時刻のさまざまな部分を配置する場所です。

。外国の日付/時刻を含むすべてのセルを選択します。

。 [データ]メニューから[テキストから列へ]を選択します。 Excelは、テキストを列に変換ウィザードを開始します。 (図1を参照)

。 [区切り]が選択されていることを確認し、[次へ]をクリックします。 Excelは、ウィザードの2番目のステップを表示します。

。 [スペース]チェックボックスがオンになっていることを確認します。

。 [完了]をクリックします。

日付と時刻が5つの個別の列に分割されました。これで、数式を使用して有効な日付/時刻を元に戻すことができます。たとえば、日付/時刻の展開バージョンがセルA1:E1にあると仮定すると、次を使用できます。

=(C1&B1&E1)+D2

繰り返しますが、日付/時刻形式を使用して結果をフォーマットすると、すべて設定されます。

マクロを使用して変換を実行する場合は、次のマクロが選択されたすべてのセルをステップスルーして変換を実行します。

Sub ConvDate()

Dim c As Range          For Each c In Selection.Cells         c = DateValue(Mid(c, 5, 6) & ", " _           & Mid(c, 21, 4)) + TimeValue(Mid(c, 12, 8))

c.NumberFormat = "dd MMMM yyyy h:mm:ss"

Next c End Sub

マクロは、テキスト文字列を(DateValueを使用して)受け入れ可能な日付/時刻に変換してから、セルをフォーマットしてvalueプロパティを表示します。

注:

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

link:/ excelribbon-ExcelTipsMacros [ここをクリックして、新しいブラウザタブでその特別なページを開きます]

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

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

link:/ excelribbon-Converting_an_Unsupported_Date_Format [サポートされていない日付形式の変換]