私は英国にいるのですが、米国形式で指定された日付のリストを取得できないという問題があります。 Excelは両方の形式で有効なものを英国の日付として扱い(たとえば、2012年3月1日は3月1日ではなく1月の3日になります)、有効でない英国の日付は扱います(たとえば、03/13 /) 2012)基本的なテキストとして。この選択は私の地域の設定と関係があると思います。
私が欲しいのは、システムがこのテキストの列が米国の日付形式で提供されていることを認識し、それを計算のために基礎となる日付表現に変換することです。
どうすればよいですか?
編集:日付は次の形式のCSVファイルで提供されます。
3/ 1/2012, 09:01 , 18:58 ,9.4,0.6
3/1は3月1日
Excel 2010の場合、CSVファイルを開くのではなく、新しいワークブックを作成し、次に[〜#〜] data [〜#〜]タブでGet External Dataを選択します→From Text。これは、日付の処理方法など、テキストデータの解釈方法を指定できるインターフェイスに到達します。
ファイルの拡張子を「.csv」から「.txt」に変更し、Excelで開きます。 Excelはテキストインポートウィザードを提供します。最初のページで「区切り」を選択し、2番目のページで「カンマ」をオンにします。3番目のページでは、データの各列のタイプを選択できます。タイプの1つは日付で、さまざまな形式(m/d/y、d/m/yなど)のドロップダウンがあります。
本当の問題は、日付がフォーマットされた形式で提供されることです。すべての初心者プログラマーが最初に学ぶことは、日付をフォーマットしないで、正しいフォーマットに解釈される単なる数値であることです。
したがって、実際の解決策は次のとおりです。1.日付を数値形式で入力し、失敗した2.日付を自分で数値形式に変換し、日付形式で別の列に表示する。
数値2はプログラミングを含まず、元の列の形式を一般的なテキストとして保持し、数値形式に変換する式(計算されたテーブル列)と、その値を日付形式として表示する別の列を使用して、あなたの好み。
私は同じ問題に遭遇しましたが、少し異なる方法で発生しました。 CSVファイルからインポートされる日付は英国形式ですが、日付が米国と英国の両方で有効な場合、Excelは日付を米国形式として扱います。私の回避策は、日付をテキストとして(NumberFormat = "@"を使用して)シートに解析し、その後、セルを正しい日付形式(NumberFormat = "dd/mm/yyyy"を使用)として再フォーマットすることです。
(とにかく私には)それを行う最も簡単な方法のようです。
おそらく次のことができます:
1)Windowsタスクバーの日付設定を米国時間に変更します。これを行う方法のガイドは次のとおりです。 http://www.sysprobs.com/change-date-format-windows-7-ddmmyyyy
2)ExcelでUSタイミングを設定します。セルの書式設定>日付>ロケール>英語(米国)に移動します
これは私にとってうまくいきました、それが役に立てば幸いです。
Excel/CSVで米国の日付を英国の日付に変換する
(あなたは本当にあなたのロケール設定を変更したくありません)
これは2段階のプロセスです。
Excelが一部の日付をUK形式に自動変換して、変換を台無しにしないようにするには、Excelで列を強調表示し、[データ]> [テキストから列]に移動します。
フォーマットメニュー(セルの右クリック)で設定しないでください。機能しません。 「テキストを列に」で日付を選択しないでください。これは英国の設定を使用して米国の日付を変換するため、「テキスト」を使用します。
[csvのインポートについてもdunxdの回答もご覧ください。これは、txtとしてインポートした場合にも機能します。]
2。予備の近接列に次の式をコピーします。 F2への参照を開始セルに置き換えます。選択した日付形式で列をフォーマットします。
= DATEVALUE(CONCATENATE((IF(MID(F2,4,1)= "/"、MID(F2,3,1)、IF(MID(F2,2,1)= "/"、MID(F2,3 、2)、IF(MID(F2,6,1)= "/"、MID(F2,4,2)、MID(F2,4,1)))))、 "/"、IFERROR((IF( SEARCH( "/"、LEFT(F2,2))、LEFT(F2,1)、LEFT(F2,2)))、LEFT(F2,2))、 "/"、IF(ISERR(FIND( "/ "、RIGHT(F2,3)、1))、RIGHT(F2,4)、RIGHT(F2,2))))
注:これは、次の形式の日付で機能します。
日付が「/」で区切られていない場合は、上記の数式のこの区切り文字を置き換えます。
それが役に立てば幸い。
アップデート17-2-2014
少し内訳を要求したように:
DatevalueとConcatenateは、英国の日付形式で最終的な文字列を作成するだけなので、興味深いビットになります。
a。米国の日を取得(中央値)
((IF(MID(F2,4,1)= "/"、MID(F2,3,1)、IF(MID(F2,2,1)= "/"、MID(F2,3,2)、 IF(MID(F2,6,1)= "/"、MID(F2,4,2)、MID(F2,4,1))))))
最もトリッキーな部分。日付の形式がわかりません。どこかに2つの「/」があることはわかっていますが、どこにあるかを見つける必要があります。最もトリッキーな部分は、1/1/10などのデータです。2番目の「/」は4番目のchrである可能性があり、10/10/10のような日付では、最初の「/」は3番目です。 2番目は6番目のchrです。最初と2番目の「/」を区別する方法が必要です。 「1/1 /」フォーマットが「/」が4番目のchrになる唯一の方法であるという幸運なことに、これを使用できます。
b。米国の月を取得(左の値)
IFERROR((IF(SEARCH( "/"、LEFT(F2,2))、LEFT(F2,1)、LEFT(F2,2)))、LEFT(F2,2))
かなりシンプルで、
c。年を取得する(正しい値)
IF(ISERR(FIND( "/"、RIGHT(F2,3)、1))、RIGHT(F2,4)、RIGHT(F2,2))
シンプル、
お役に立てれば。
私は同じ問題を抱えていましたが、逆に、オーストラリアから米国への形式です。
私の場合、CSVファイルを開くマクロを実行します。ファイルの1つの列には日付が含まれています。計算されたデータを含む列を追加した後、マクロはそれを.XLSファイルとして保存します。 XLSファイルでは、両方の形式で有効な日付が変更されます。つまり、12/11/11は11/1/12になります。私のマクロは日付列に一切触れず、CSVは常に正しい形式であることに注意してください。これは、Office 2010を実行しているお客様のPCでのみ発生するようです。Office2000または2003では見られません。
私がそれを回避することができた唯一の方法は、マクロを変更してCSVをインポートする代わりにインポートし、日付列にテキスト形式を指定することです。
私は別の可能性を検討しました。それは、日付の前に「スペース」を置くためにgrepコマンドのようなマクロシェルを持つことです。これにより、Excelが日付として解釈されなくなります(日付を囲む引用符は役に立ちません)。インポートの方がきれいだと思いました。編集を行うためのネイティブWinユーティリティがないため、お客様のPCにgrepをインストールする必要があります。
問題は、Excelの日付設定が(および一部の日付)で始まる日付形式であり、かつasterik()で始まる日付形式が、オペレーティングシステムに指定された地域の日付と時刻の設定の変更に応答することです。コントロールパネルに移動し、日付と時刻の形式を調整して、日付が反転しないようにする必要があります。たとえば、2013年11月11日は2013年11月1日(11は11月)に反転しますが、2013年11月30日は反転しません。これは、msが30日を有効な月として認識しないためです。数式は必要ありません
最近、Excel 2010で同様の問題が発生しました。Excelは、日付が米国の日付形式として正しく解釈されない、つまり、日付が12を超える日付を解釈しました。日付が13未満のすべての日付について、US mm/dd/yy形式で表示しました-すべて同じ列にあり、すべて同じ形式です。私の最初の行動方針は、ExcelとWindowsの両方の設定が英語(オーストラリア)または最低でも英語(イギリス)であることを確認することでした。どちらも正しくなかったので、両方を変更し、アドバイスに従ってExcelを再起動しました。これで問題は解決しませんでした。日付の列をテキストとして再フォーマットし、正しい日付と米国の日付の間に数行挿入し、コピーハンドルをドラッグしてバックフィルし、新しいセルに正しい日付を入力し、レコード内の他のセルの内容をそれらにドラッグしましたne場所と危険な行を削除しました。日付の列を日付の形式に再フォーマットしたときに私が発見したのは、日付が正しい方向のdd/mm/yyyyであるにもかかわらず、Excelが2つの異なる形式を認識していることです-1つは左揃え、もう1つは右揃え、形式の描画または他のオプションはこれを解決します。
奇妙なことに、左揃えのセルの1つから隣接するセルにタブで移動すると、セルは右揃えのバージョンに再フォーマットされ、正しい日付形式が保持されました。 Excelではリボンの[数値]セクションに両方の[日付]記述子が表示されていたため、これを説明することはできませんが、問題は修正されました。
私はかなり長い間この問題を抱えていました。これはよく誤解されている問題のようです。具体的には、コンピュータが日付を正しい形式で認識するとは限りません。日付をDD/MM/YYYY形式で記録すると、ExcelはそれをMM/DD/YYYY形式で解釈します。したがって、2012年5月6日は2012年6月5日を意味しますが、Excelはそれを2012年5月6日として解釈します。同様に、2012年12月13日を意味する2012年12月13日と入力した場合、Excelは月が存在しないため、日付をまったく認識しない13。
この問題を修正するために、最初の2つの日付の数値を反転させる式を考案しました。これは、米国を英国に、またはその逆に変換するために使用できます。
=IF(ISERR(DATEVALUE(F10))=TRUE,DATE(RIGHT(TEXT(F10,"DD/MM/YYYY"),4),LEFT(TEXT(F10,"DD/MM/YYYY"),2),LEFT(RIGHT(TEXT(F10,"DD/MM/YYYY"),7),2)),IF(ISERR(DATEVALUE(TEXT(F10,"mm/DD/YYYY")))=TRUE,DATE(RIGHT(TEXT(TEXT(F10,"mm/DD/YYYY"),"DD/MM/YYYY"),4),LEFT(TEXT(TEXT(F10,"mm/DD/YYYY"),"DD/MM/YYYY"),2),LEFT(RIGHT(TEXT(TEXT(F10,"mm/DD/YYYY"),"DD/MM/YYYY"),7),2)),0))
これは、私が望んでいた方法とまったく同じように機能し、フィールドにはまだ存在しないソリューションだと思います。これで問題が解決するかどうかをお知らせください。
PS。この数式にExcel 2007を使用していました。
関連情報とすべての問題への答え:
保存すべての日時情報を1つの形式のみで:
http://en.wikipedia.org/wiki/ISO_8601
必要に応じて、保存されたデータに表示形式フィールドを添付します。