サポートされていない日付形式の変換(Microsoft Excel)
他のプログラムから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 [サポートされていない日付形式の変換]
。