Excel でテキストを必要な dd-mm-yyyy に変換できない

Excel でテキストを必要な dd-mm-yyyy に変換できない

以下の Excel の問題を解決しようとして頭が痛くなっています。Excel 2003 を使用しています。以下の形式の text.txt から数千のデータをインポートし、dd-mm-yyyy に分割しようとしています。

-> 6022015 (7 番)

->26012015 (8 桁)

Excel では、データ ツール > テキストを列に > 固定幅

-> 6!02!2015 (7 番号)

->26!01!2015 (8 桁)

列データ形式で、一般を選択して完了します。7つの数値については、3つの列に分割することに成功しました。しかし、8つの数値については、以下のエラーが発生します。以下は結果です。

->26012015 を ->2 60 12015 に変更します。「これは 2015 年 1 月 26 日のはずです」

-> 6022015 から ->6 2 2015 に変更

誰かエラーを特定して解決策を提供してもらえませんか?

答え1

日付が「ddmmyyyy」形式であることを願うので、テキストを列に入力する代わりに、検索と置換を試してください。「!」何もない次に以下の式を適用します。

=IF(LEN(A2)=8,LEFT(A2,2)&"-"&MID(A2,3,2)&"-"&RIGHT(A2,4),"0"&LEFT(A2,1)&"-"&MID(A2,2,2)&"-"&RIGHT(A2,4))

これが期待通りであることを願います :)

答え2

生のデータがdmmyyyy(7 桁) またはddmmyyyy(8 桁) の形式であると想定します。

  1. すべてのデータを列 A にコピーする (またはデータを列 A にインポートする) だけです。

  2. B1に入力し=DATE(RIGHT(A1,4),MID(A1,LEN(A1)-5,2),LEFT(A1,LEN(A1)-6))、下方向にコピーします。

  3. 列 B を として書式設定しますdd-mm-yyyy。列 B が希望どおりになります。

答え3

これを試してみてください:

=substitute(a1,"!","/")

念のため、日付として返されない場合は、ゼロを追加してみてください。

=substitute(a1,"!","/")+0

また、セル内に空白が含まれている場合(詳細なテキストの左側または右側)、次のようにセルをトリミングします。

=trim(substitute(a1,"!","/")+0)

答え4

wilson私個人としては、データを分解して再び組み立てるというアプローチを採用します。ただし、Text to Columnsウィザードで成功するには、区切り文字または同じ長さのデータが必要です。

同じ長さのデータを簡単に実現できます。隣、または便利な場所に「ヘルパー列」を配置し、次の数式を使用します。

=IF(LEN(A1)=7,")"&A1,A1)

8 文字の値の列を取得するには、必要なだけコピーする必要があります。それができたら、列をコピーして、Paste|Values|Special数式ではなく値の列を取得します。Text to Columnsウィザードを使用して、幅を固定し、日付として解釈するように指示し、1 つの列 (複数の部分に分割したくない) にして、DMY日付の種類を指定します。

出力の 1 列が「実際の日付」になり、それをコピーして元のデータの上に貼り付けることができます。または、その横に貼り付けたり、その他の方法でもかまいません。

重要なのは、データをすべて 8 文字の長さにして、すべて同じように扱えるようにすることです。Excel は、7 桁のデータが 1 桁の日なのか、2 桁の月なのか、またはその逆なのかを判断できないため、その点に注意して作業する必要があります。

6 桁のものがあったとしても、基本的な考え方は同じですが、数字を詰めるのが少し難しくなります。

また、これが機能するのは、最後の 4 桁が年であり、2 桁の年ではないこと、および月がすべて 2 桁の値であり、1 桁の月ではないことを知っているからです。そのことを確信できない場合は、より洗練されたアプローチが必要になります。

関連情報