エクセルで文字列を日付に変更する方法

このQ&Aのポイント
  • エクセルの総勘定元帳をエクスポートして編集する際に、日付が文字列になってしまって困っています。日付の書式を正しく認識させる方法を教えてください。
  • 現在エクセルで日付の文字列を正しい日付として認識させる方法として、特定の列に数式を入力し、書式設定を行っています。しかし、この方法では手間がかかるため、もっとスマートな方法を知りたいです。
  • VBAを使わずにエクセルで日付の文字列を正しい日付として認識させる方法について教えてください。現在の方法では、置換えや数式の入力といった手順が必要ですが、もっと簡単に実現できる方法があれば教えてください。
回答を見る
  • ベストアンサー

エクセル 文字列を日付に変更したい

勘定奉行21を使っています。 総勘定元帳をエクセルにエクスポートして、編集することが多いのですが、日付が文字列になってしまって困っています。これを正しい日付として認識させたいです。 エクセルに出力される日付の例 16 430 16 8 1 161020 など、和暦で表示されていて、月日は一桁の場合は半角スペースが入るようになっています。 スペースが入っているものは文字列として、3番目のようにスペースがないものについては161020という数値として認識されます。 現在行っている方法 A列に上記が入っているとして、B列に数式を入れます。 1)A列を選択し、置換えで半角スペースを"0"(ゼロ)にします。 2)B列に空白の列を挿入します。 3)B列に以下の式を入れ、下までコピーします。 =IF(A6="","",DATEVALUE("H"&MID(A6,1,2)&"/"&MID(A6,3,2)&"/"&MID(A6,5,2))) 4)B列を書式を選択して貼り付けで値にします。 5)A列を削除します。 6)A列の書式設定でユーザー設定「ge.mm.dd」と入れます。 ※B列より右側には15行ほど他のデータが入っています。 ※この日付がA6から下へ続いているのは毎回同じなのですが、出力する時によって全体の行数は増減します。 ※数式のIF部分については、値の貼り付けにした時に、エラーが残ってしまうので入れてあります。 ※H16.01.20の様な表示形式にしたいです。 今のことろは、上記をマクロで記録して、貼り付け用のシートを作って毎回使えば良いか…と考えているのですが、どうもスマートな気がしません。 他に何か良い方法が思いつく方がいらっしゃいましたら、宜しくお願い致します。 ちなみにVBAは分かりません(^^;

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ファイル名:Book1.xls、シート名:Sheet1と仮定。 データを、A1を始点に貼り付けて、以下のをマクロを実行すると上手くいきませんか? Sub test() Dim wbthis As Workbook Dim wsthis As Worksheet Dim l As Integer Dim rdata As Range Dim hiz As Date Set wbthis = Workbooks("Book1.xls") Set wsthis = wbthis.Worksheets("Sheet1") wsthis.Range("A:A").Replace What:=" ", Replacement:="0", LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=True, MatchByte:=True For l = 1 To wsthis.Range("A1").End(xlDown).Row Set rdata = wsthis.Cells(l, 1) If rdata.value <> "" Then hiz = DateValue("H" & Mid(rdata.Value, 1, 2) & "/" & Mid(rdata.Value, 3, 2) & "/" & Mid(rdata.Value, 5, 2)) rdata.Value = Format(hiz, "ge.mm.dd") Next End Sub

du-sama
質問者

お礼

ありがとうございます!まさにその「空白のセルは無視する」的なところが分からなかったんです。うまくいきました。意味の分からない部分ばかりですが…、勉強していこうと思います。すごく役にたちました。ありがとうございました(^^)

関連するQ&A

  • 画像のようなエクセルのA~D列に任意文字列が入っています。

    画像のようなエクセルのA~D列に任意文字列が入っています。 E1に 「A1(半角スペース)+B1~D1のいずれかのうちの1つ」 を出力させたいのですが、ブランクの欄もあるので =IF(C2="",B2,C2) など入力してみたのですが、うまくいきません。 最終的に 「A1(半角スペース)+B1~D1のいずれかのうちの1つ」 を表示させることはできないでしょうか? 詳しい方、アドバイスお願いいたします。

  • A列が今日の日付ならC列のセルの背景に色をつけたい

    A列が今日の日付ならC列のセルの背景に色をつけたい エクセル2007です。 A1に2012/03/04といれ、 下へオートフィルしています。 そしてC列に対して 「A列が今日の日付なら、セルの色を塗りつぶす」と言うようにしたいのですが 式がわかりません。 条件付き書式の 新しい書式ルール→「数式を使用して、書式設定するセルを決定」 で 「次の数式を満たす場合に値を書式設定」 に「=$A1=date()」と入れると 「入力した数式は正しくありません。」 となってしまいます。 どうすればいいでしょうか?

  • EXCELで日付を文字列として取り出すには

    EXCELで日付形式のセルの内容を、そのイメージのまま文字列にするにはどうすれば良いでしょうか。何かうまい方法があれば教えてください。 例えば、2006/01/05 と表示されている日付をそのまま文字列として 取り出したいのです。単にセルの書式設定で文字列に変えただけでは 38722とタイムスタンプの値らしきものに化けてしまうので困っています。

  • Excelで文字列セルにて条件式を設定するには

    Excelにて、書式設定が「文字列」のセルに以下の条件を設定するにはどうすればよいでしょうか。 どなたか教えてください。 Excelのマクロ機能を使用して、CSVデータを取り込み、シート上の所定のセルにCSVデータを出力させている既存システムがあるのですが、出力の際に次のような条件を追加したいと考えています。 なお、マクロの修正にて対応できればいいのですが、システムの設定上、マクロをいじることができないため、なんとかシート上で条件式にて対応したいと考えています。 列Bのセルに、隣の列Aの値をみて出力する内容を変えるための条件式を設定したい。 なお、列A,Bともに条件を設定する対象は複数行を想定。ともに書式は文字列。 例) ・A1の値が空欄でないとき、B1には取り込んだCSVデータの値を表示。 ・A2の値が空欄のとき、B2には固定で”あああ”と表示(現行ではA2のデータ元CSVがスペースの場合、B2のデータ元も必ずスペース。よって、A2、B2ともに空欄になっている)。 とりあえず、列BにIF文の条件式を設定してみたのですが、文字列セルのため、設定した条件がそのまま表示されてしまいます。 なにかよい方法はないでしょうか。よろしくお願いします。

  • Excelの日付の入力について

    A列のセルにずらっと 2011/11/29といった感じで日付の入力をしています。 セルの書式設定で 2011年11月29日 と表示されるようにしています。 これらのデータを表示されている通り B列に貼り付けをすることは可能でしょうか? 貼り付けをしてB列のセルの書式設定で 表示方法の選択をすればいいのすが それでは見せ方を変えているだけなので 出来れば 2011/11/29を 2011年11月29日という文字列のデータにして 貼り付けという作業がしたいです。 詳しい方、お願いします。

  • 日付を文字列ではなく、日付として表示させたいです!

    Excelで下記の数式を使用し、隣のシートから日付(〇〇〇〇/〇〇/〇〇の形式)を 表示させたいのですが、何故か文字列として表示されてしまいます。 (2020/5/20なら43971と表示され、表示形式を「日付」で選択しても変わりません) 日付として表示するにはどうしたら良いでしょうか。 また、同じセルでも日付ではなく、単語が表示されるケースもあるので、その場合は同じ単語が表示されるようにしたいです。 ◆使用している数式 IF(ISERROR(VLOOKUP(G10,Aシート!$B$2:$F$30,5,FALSE)),"",VLOOKUP(G10,Aシート!&B$2:$F$30,5,FALSE)&"") 空欄の時は、0やエラーを表示させないように式に組んでいるので、 もしかしたら、その影響かもしれません... excelにあまり詳しくなく、ご教示頂けましたら助かります。 よろしくお願いいたします。

  • エクセル 文字列の日付を日付書式に変換

    文章の中に混じっている日付を切り出しました。しかし書式を変更しても日付になってくれません。そこでこれをDate関数で日付化しようとしたのですが、”日”の部分が切り取れません。 例 1/1/2001 1/10/2001 12/29/2001 このように桁がバラバラなので、Left,Right,Mid関数とDate関数に組み込んでみましたが、日の部分を指定する方法がわかりません。 =DATE(RIGHT(A1,4),MID(A1,FIND("/",A1)+1,????) ????に何を入れたらいいでしょうか。

  • EXCEL 文字列分割について

    EXCEL2003を使用しています。 1つのセルに文字列が入力されており、 それを決まったバイト数ずつ別のセルに分割したいと考えています。 例)A1の文字列を6バイトずつ分割したい A1:東京都文京区 ↓ B1:東京都 C1:文京区 これを実現する為に B1に「=LEFTB(A1,6)」 C1に「=MIDB(A1,7,6)」という数式を入力しました。 A1の文字列が全角のみ(または半角のみ)なら 上記の数式で問題ないと思うのですが、 分割対象の文字列は全角と半角が混ざっており、 例えばA1の値が 「a東京都文京区」 というようなものだった場合、 B1:a東京 C1:文京 となり、元の文字列にある「都」の文字が消えてしまいます。 元の文字列が上記の様な場合には B1:a東京 C1:都文京 というように値が返されるようにしたいのですが、 どのように実現したらよいでしょうか?

  • 日時を文字列にしたい

    こんにちは。 以下の内容で困っています。 アドバイス宜しくお願いします。 ○内容 セルA1に「2008/11/10 09:08」と入力されている日付のデータがあります。 これをB1に「200811100908」という文字列にしたいのですが、関数を利用して対応できないでしょうか? ○環境 Excel2000 ※西暦部分に関しては以下の方法で文字列にすることができました。 1.B1=YEAR(A1)*10000+MONTH(A1)*100+DAY(A1) 2.出力した値を標準書式にする

  • Excel 文字列抜き出しについて

    図のようにA1のセルに半角空欄の混じった文字列が入っています。 半角空欄は[ _ ]赤のアンダーバーで表してあります。 B1~G1セルのように文字列を抜き出すにはどのような数式を入力したらいいのでしょうか?

専門家に質問してみよう