重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんばんは。
データ整理の作業効率を上げたいと思い、質問致します。
今、以下のように、日付と単語が一緒くたになった文字列が5行あります。

2008/12/19  信管
2008/11/15  PLC
2006/10/13  分波器
2006/9/ 8  AES
2006/8/3   DES

この文字列を、WordやExcel、何らかのエディタを用いて、

2008/12/19  
2008/11/15  
2006/10/13 
2006/9/ 8  
2006/8/3  

日付だけにしたいのです。
もちろん、1行ずついらない文字を消していけばいいことなのですが、こういった<日付+本文>の文字列が、4000行ぐらいありまして・・・なので、どうしても日付だけ、簡単に抽出する方法はないかと考えています。
みなさんのお知恵をおかりしたい次第です<m(__)m>

A 回答 (7件)

>のうちの、どこかの文字列を変更すれば、「AES」と「DES」も消すこともできると思うのですが・・・すいません、もしお暇でしたら、再度ご指導していただければ幸いです


2008/12/19  信管
2008/11/15  PLC
2006/10/13  分波器
2006/9/ 8  AES
2006/8/3   DES
詳しく説明します。
\dは数字にマッチします。
 \dで一文字、\d*で0文字以上、\d+で一文字以上、\d{0,2}で0文字から2文字
\sは空白文字、半角スペースとか、タブとか
.は任意の文字

(\d+/\d+/\d+)でマッチしないものがあるとすると
2006/9/ 8  AES
は8の前に空白文字がひとつある。
2006/8/3   DES
は3の後に半角ではなく全角のスペースがある。

これらにもマッチさせようとすると
(\d+/\s*\d+/\s*\d+).*
  →\1
ですね。
(数字一文字以上/空白文字が0個以上と数字一文字以上/空白文字一文字以上と数字一文字以上)任意の文字の0個以上

置換ではなく、検索でこれを行うとマッチした部分の色が変わる

ついでに余分な//間の空白も削除したい
日時の後ろに全角文字もありうる
・・・なら
(\d+/)\s*(\d+/)\s*(\d+).*$
  →\1\2\3
$は行末を示す。最長マッチと言って一番長くまで探すのでこの場合はいらない。
    • good
    • 0
この回答へのお礼

返信遅くなってすいません<m(__)m>
ちょっと高度な印象を受けますが、腰を据えて、取り組んでみたいと思います。真摯に答えていただき、本当にありがとうございました!

お礼日時:2008/12/07 13:18

エクセルでの方法です。



「置換」で
「検索する文字列」:半角スペース全角スペース*
「置換後の文字列」:ブランク
    • good
    • 0
この回答へのお礼

あれ、うまくいかないですね・・・「*」(←アスタリスク?)みたいなものが、どう機能するのかちょっと僕では理解できないみたいですね・・・(悲)

お礼日時:2008/11/30 21:19

>4000行ぐらい


となると、テキストエディタが早いでしょうね。
EmEditor( フリー版: http://www.vector.co.jp/soft/winnt/writing/se047 … )、(有償版: http://jp.emeditor.com/

検索→置換にて正規表現を選択して
(\d+/\d+\d+)\s.*\n

\1\n
で一瞬にして終わる
    • good
    • 0
この回答へのお礼

すごいですねこのやり方!
でも正規表現って、初めて聞きました・・・かなり難易度が高い気がします(汗)

実際、EmEditorをダウンロードして、試してみました。

2008/12/19  信管
2008/11/15  PLC
2006/10/13  分波器
2006/9/ 8  AES
2006/8/3   DES

という文字列に、ORUKA1951さんに教えていただいたように、検索→置換で、\d+/\d+\d+)\s.*\n→
\1\n
と、やってみたのですが、結果は

2008/12/19
2008/11/15
2006/10/13
2006/9/ 8  AES
2006/8/3   DES

となりました(汗)
なんで「AES」と「DES」は、消せないのでしょうか?
たぶん、(\d+/\d+\d+)\s.*\n

\1\n
のうちの、どこかの文字列を変更すれば、「AES」と「DES」も消すこともできると思うのですが・・・すいません、もしお暇でしたら、再度ご指導していただければ幸いです<m(__)m>

お礼日時:2008/11/30 21:12

いろいろな方法がありますが、Excelの場合で、かつ、日付文字列とそれ以降の文字列の間に、一定のルール(この場合、必ずスペース(半角、又は全角スペースが一個入っている)があれば、以下の数式でできます。


<対象の文字列が「A1」とした場合で、半角スペースで区切られているものとして>
「=LEFT(A1,FINDB(" ",A1,1)-1)」
この数式の意味は、「文字列の左側から(LEFT関数)最初に見つかる(FIND関数)区切り文字(この場合は半角スペース)の文字位置(桁数)の一文字手前(-1)までを切り取る」というものです。
    • good
    • 0

ここに書かれているデータの日付と文字間のスペースがこのままで


したら、次の方法で出来ると思います。
   A                 B
1 2008/12/19  信管     =LEFT(A1,10)
2 2008/11/15  PLC
3 2006/10/13  分波器
4 2006/9/ 8  AES
5 2006/8/3   DES
B1 に =LEFT(A1,10) の関数式を入れて、下にコピーです。
 後は”形式を指定して貼り付け” ”値”
 これでやってみて下さい。
    • good
    • 0
この回答へのお礼

こんな便利な関数があるんですね、左から10文字ピックアップしてくれるなんて・・・だいぶ作業が楽になりそうです、ありがとうございました!

お礼日時:2008/11/30 21:00

データがエクセルであり日付との間にスペースがあれば、


データ → 区切り位置で

Excel2003
区切り位置で楽々データ分割
http://kokoro.kir.jp/excel/delimitation-position …

Excel2007
http://www.becoolusers.com/excel/text-to-columns …
    • good
    • 0
この回答へのお礼

ほ~リンク先の解説すごいわかりやすいです、ありがとうございます!

お礼日時:2008/11/30 20:57

テキストベースのファイルでスペースが日付と文字列の間に入っているのでしたら、Excelに取り込む際に日付だけ分離するという手が使えるかもしれません。



Excelを開いて「データ>外部データの取り込み」を選び、スペースがセルの区切り位置となるよう指定してデータを取り込みます。
うまく分離できたら、日付の列だけを選んで他のファイルに移したり、後ろの文字列をばっさり消したりことができます。
Excelのバージョンで操作が違うと思いますが、「Excel 外部データ」などで検索すると役立つページがみつかるかも。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/mous_ …
    • good
    • 0
この回答へのお礼

夜分遅くに回答していただきありがとうございます<m(__)m>
なるほど、スペースがあれば、その箇所より右側で、セルを分割できるんですね~知らなかったです^_^;

お礼日時:2008/11/30 20:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!