• ベストアンサー

文字列を日付で認識するには-2-

こんにちは。 Excel2000のことで先ほど質問をさせて頂きました。 "=20910"と入力しているデータを 日付として認識するための方法を教えていただきました。 ※その他にもデータは100件以上あります。 回答は、 =DATE(LEFT(A1,LEN(A1)-4)+2000,MID(A1,LEN(A1)-3,2),RIGHT(A1,2)) を頂きました。 結果、2000年代は正しい結果が得られたのですが、 1900年代の場合はどのようにすれば宜しいでしょうか? 991101、781011などの場合です。 よろしくお願いいたします。

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

  • ベストアンサー
  • taknt
  • ベストアンサー率19% (1556/7783)
回答No.1

簡単にするならば =DATE(LEFT(A1,LEN(A1)-4)+1900,MID(A1,LEN(A1)-3,2),RIGHT(A1,2)) 混合している場合は、ちょっとややこしくなりますね。 =DATE(LEFT(A1,LEN(A1)-4)+1900+if(LEFT(A1,LEN(A1)-4)>04,100,0),MID(A1,LEN(A1)-3,2),RIGHT(A1,2)) とすればいいでしょう。

smi
質問者

お礼

回答ありがとうございます。 データは混合していますので、 2つ目の式を参考にさせていただきます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 元ネタを出した者として、混合する方法をもう一案。 =DATE(LEFT(A1,LEN(A1)-4)+1900+100*(LEFT(A1,LEN(A1)-4)*1<30),MID(A1,LEN(A1)-3,2),RIGHT(A1,2)) なお、西暦2桁の何年を基準に2000年代と1900年代にするかという問題があります。 上式では30年未満を2000年代としました。 もし基準を変更したければ、上式の「30」のところを変えて下さい。

smi
質問者

お礼

1回目の回答に続き、2回目の回答までありがとうございます。 年代別の説明もありがとうございます。 さっそく利用させていただきます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

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

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

  • エクセルの文字列・数値【長文です】

    昨日、LEFT関数の使い方を教えていただきましたが、これですとLEFT関数を用いたところが【文字列】として認識されました。【数値】として認識させる方法を教えてください。 初心者で申し訳ございません。 昨日の質問・いただいた回答は以下の通りでした。 ≪質問≫ [123456/あいうえお/abc][234567/かきくけこ/efg]のようなデータがいくつかあって(例えばA列に)、B列に[123456][234567]、C列に[あいうえお][かきくけこ]、D列に[abc][efg]と表記できるような【関数】を教えてください。 ≪いただいた回答≫ A1にデータがあったとして。 B列 =LEFT(A1,SEARCH("/",A1,1)-1) C列 =LEFT(RIGHT(A1,LEN(A1)-SEARCH("/",A1,1)),SEARCH("/",RIGHT(A1,LEN(A1)-SEARCH("/",A1,1)),1)-1) D列 =RIGHT(RIGHT(A1,LEN(A1)-SEARCH("/",A1,1)),LEN(RIGHT(A1,LEN(A1)-SEARCH("/",A1,1)))-SEARCH("/",RIGHT(A1,LEN(A1)-SEARCH("/",A1,1))))

  • 文字列末尾についている数字を削除する2

    先ほど締め切ったのですが、 大変申し訳ありません、再質問をさせてください。 (初質問の上に不手際続きで本当に申し訳ありません) 前回質問 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2333617 カタカナ濁音がある場合に、 =LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},ASC(A1)&1234567890))-1) を使うとうまくいかず、 =IF(AND(RIGHT(A1,3)>="100",RIGHT(A1,2)<="999"),LEFT(A1,LEN(A1)-3),IF(AND(RIGHT(A1,2)>="10",RIGHT(A1,2)<="99"),LEFT(A1,LEN(A1)-2),IF(AND(RIGHT(A1,1)>="0",RIGHT(A1,1)<="9"),LEFT(A1,LEN(A1)-1),A1))) でなんとかうまくいったものの、 内容が汎用的ではなく、もう一案いただきたく =JIS(LEFT(ASC(A1),FIND({1,2,3,4,5,6,7,8,9,0},ASC(A1)&"1234567890")-1)) をテストデータでやったところうまくいったので 締め切らせていただいたのですが、 本ちゃんデータで走らせて見たところ、 コードの最左数値が1以外のものではうまくいきませんでした。 つまり カブ1   カブ カブ10  カブ カブ100 カブ カブ2   カブ2 カブ20  カブ20 カブ200 カブ200 もう少しお知恵をいただけるとうれしいです。 ずうずうしくて大変申し訳ありません

  • 文字列として入力した日付を日付データに変換したい

    OS=Windowds7 エクセルバージョン MicroOffice Home and Buisiness 2010 の中のエクセル です A列に下記のように文字列としての日付が入力されています。 例) 2014年1月5日(日) (セルの属性も”文字列”です) ここから、日付データを取り出したいです。 なお、年は4ケタ固定 プラス 漢字の”年”ですが、 月、日は十の位はゼロ表示していないので、一桁表示、二桁表示、とばらつきがあります。 また曜日表示は全角のカッコの間に漢字一文字で曜日表記してあります。 ま、文字列の日付表示から日付データさえ取り出せれば、あとは曜日のデータ取出しは簡単にできますからこれは後回しにします。 とりあえず無い知恵を絞ってこんなことをやってみました。 =LEFT(A14,LEN(A14)-3) 結果はこうなります。 計算結果 2014年1月5日 これで文字列表記の日付データが何月何日であっても(つまり、月、日が一桁表示でも二桁表示でも、どっちでも)「YYYY年M月D日」の形式での年月日表示にすることはできました。 しかし、この状態ではまだ計算結果として表示している「2014年1月5日」は依然、文字列データのままです。これでは加工ができません。 私は 2014年1月5日(日) という文字列データを日付データに変換して、例えば H26.1.5 平成26年01月05日 1/5 (それを基にして別ののセルに)sunday、日曜日、日曜、日 などなどなどの多彩に曜日表記する など「日付データとしての表記の加工」を自由に行いたいのです。 どなたか、やり方を教えてください。 なお、データ加工の為の作業用セル、作業用列を作るのは構いませんがなるべく少ない領域で お願いします。 また私が無い知恵を絞って作成した計算式 =LEFT(A14,LEN(A14)-3) が無意味ならば(多分、無意味でしょう)、全く無視していただいて構いません。 よろしくお願いします

  • エクセル 文字列(数値)を日付データに変換

    システムからCSVデータを抽出したのですが、日付データと時刻データが数値としてあります。これを日付、時刻データに変換したいのですが良い方法はありますでしょうか。 A1     20070601 → 2007/6/1 B1 1230   → 12:30 としたいのです。 データは1万件以上あるため、手入力で「/」を入れて いくわけにはいかず困っています。 またA1セルを「left関数」などで分割してから、 「&」で結合させても文字列として認識して うまくいきません。 何か良い方法がないかよろしくご教示を お願いします。

  • 文字列を日付で認識するには

    こんにちは。 ある期間の日数を求めたいのですが、 入力されいてるデータが "=020919"と文字列入力されています。 ※(")も入力しています。 ※2002年9月19日を示すデータです。 このデータを2002/09/19と認識できる方法はありませんか? データが1件だけであらば修正するのですが、 異なるデータが100以上あります。 何か良い方法を教えて下さい。 よろしくお願いします。

  • 【Access2010】桁数バラバラの日付を統一

    添付画像のような日付データ(ピリオド区切り)があります。 データ(csvファイル)は原則毎日インポートしているので、日付の異なるデータが混在することはほとんどありませんが、まれに多忙・有休などで数日間インポートしなかった場合は混在してしまいます。 その場合は、csvファイルをコピーして桁数ごとにインポート→桁数ごとの更新クエリーを実行し数字8桁にする→更新クエリーで日付型にしています。  <例1:「***.*.*」の場合(日付更新用へ)>   桁数ごとの更新クエリー    → Left$([日付],4) & "0" & Mid$([日付],6,1) & "0" & Right([日付],1)  <例2:「***.**.**」の場合(日付更新用へ)>   桁数ごとの更新クエリー    → Left$([日付],4) & Mid$([日付],6,2) & Right([日付],2)  <共通>   日付型への更新クエリー    → Left$([日付更新用],4) & "/" & Mid$([日付更新用],5,2) & "/" & Right$([日付更新用],2) 実行すべき桁数ごとの更新クエリーを間違えるとインポート作業からやり直さなければならず、非常に面倒です。 桁数が違っても同じクエリーで数字8桁にする方法はありませんか?フィールド・クエリーの追加はいくらでも可能です。

  • 文字列操作

    VB6の質問です。 下記のような桁数不定の取得データがございます。 桁数不定の為、Mid, Left, Right関数が使用できません。 Buffer = "A12345...B678910...C" 区切り文字A、B、Cを除いてデータを取り出したのですが、どのような方法がございますか? Data1 ="12345..." Data2 ="678910..."

  • スペースを含んだ文字列から文字列の抽出

    エクセルバージョン2007 スペースを含む文字列で、A列に文字列がある時、以下の式を組んで文字列を抽出しています。 先頭にIDの数字が有る場合は、それぞれの目的に合った文字列を抽出しています。 B1=LEFT(A1,SEARCH(" ",A1,1)-1) C1=LEFT(MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),1)-1) 3 3df-32654-10 CCCCHH 10 1ab-12345-00 AAABBBB この文字列の場合、B列に3と10が表示、C列に 3df-32654-10 1ab-12345-00が表示されます。 先頭に、IDの無い文字列は以下の様な構成です。 6rt-95132-00 PPPKKK この文字列の場合、B列に6rt-95132-00、C列にPPPKKKが表示されてしまい、この場合、IDの数字が無い場合はB列には表示させない又は、C列に6rt-95132-00させたいと思っています。 ご教授頂ければ幸いです。 以上、宜しくお願い致します。

  • 文字列操作

    VB6です。 質問させてください。 ↓例、Buffer変数に取得データが入ります 最終的に下記の3つの値を取得したいです。 Value(1) = "ABC" Value(2) = "DEFGHIJKL" Value(3) = "MN" 少し長いと思います。スマートな方法はございますか? ----- Dim Buffer As String Dim Temp1 As String Dim Temp2 As String Dim Value() As String Buffer = "?ABC-?DEFGHIJKLMN-" '取得データ '前後?-を除きます。 Temp1 = Right(Temp1, Len(Buffer)-1) Temp1 = Left(Temp1, Len(Temp1)-1) 'この時点で、4文字目、5文字目の-?を除きます Temp1 = Left(Temp1, 3) Temp2 = Right(Temp1, 11) '"ABCDEFGHIJKLMN"を取得 Value = Temp1 & Temp2 '"ABC"を取得 Value(1) = Left(Value, 3) '"DEFGHIJKL"を取得 Value(2) = Right(Value(2), Len(Value)-3) Value(2) = Left(Value(2), Len(Value)-2) '"MN"を取得 Value(3) = Right(Value, 2)

このQ&Aのポイント
  • 量子コンピューターが世界中で作られているのは、技術情報の売り買いと開発競争が行われているためです。
  • 国家の明暗を左右するほどの最先端の技術情報がビジネスとして取引されており、その上で開発競争が行われています。
  • 量子コンピューターの仕組みを最初に発明したのは日本ですが、実際にモノを先に作ったのは他国です。
回答を見る

専門家に質問してみよう