8桁の数字の表現方法と要素の取り出し方

このQ&Aのポイント
  • 8桁の数字の表現方法として、連続する8桁の数字は存在せず、要素の中には日付が含まれている。
  • ファイルから1件目のレコードを取り出すためには、instr関数を使用して2番目の頭を見つけ、その位置を全体の長さから引くことができる。
  • 質問者は「8桁の数字」の具体的な表現方法について質問しており、他に効率的な方法があれば教えてほしいとしている。
回答を見る
  • ベストアンサー

「8桁の数字」を表現したい。

要素の数が不定(決まっていない)なレコードから構成されるファイルを読みます。 そして1件目のレコードを取り出したいのです。 レコードは以下のような構成です。 頭に8桁の日付(20140602のような)が在り、各要素は英数字で全角半角ナンでも入っています。 ただ、要素は"<>"で区切られています。 例えば、 20140602<>552<>東京都あきる野市<>20140601<>電話03-442-8787<>87-3524<>19900401<>,,,,,,,, と続きます。 条件としては、 レコードの頭に8桁の日付が在りますが、要素の中には連続する8桁の数字は存在しません。 日付はまちまちですが、1900年以前はありませんので、「19000000<」と聞くことは可能です。 このファイルから1件目、 例で言えば、「20140602<>552<>東京都あきる野市<>」を取り出したいのです。 質問です。 instrで2件目の頭を見つけ、全体の長さからその位置を引いてやれば取り出せるかなと思いました。 instr(2,wka,8桁の数字)のように。 この「8桁の数字」をどう作る(指定する)かが分かりませんので、質問しています。 そのような表現は出来ないモノでしょうか。 もっといい方法が在ればそれに越したことはありません。 宜しくお教え下さい。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

こんなのはどうでしょう。 1件目のレコードは要素3つで構成されていると決まっているなら、"<>"を区切り文字としてSplit関数で分割し、先頭の3つを合体させる。 要素数が決まっていないなら、やっぱりSplitで分割して8桁の数字が2回目に出てくるまでの要素を合体。 Sub Sample()   sStr = Split(Range("A1"), "<>")      '要素が三つと決まっている場合   sSample1 = sStr(0) & "<>" & sStr(1) & "<>" & sStr(2) & "<>"      '要素数が決まっていない場合   Sample2 = sStr(0) & "<>"   For i = 1 To UBound(sStr)     If IsNumeric(sStr(i)) And Len(sStr(i)) = 8 Then Exit For     Sample2 = Sample2 & sStr(i) & "<>"   Next i End Sub

nagahaha
質問者

お礼

早速有り難うございました。 やはり、ズバリはないみたいですね。 正規表現を調べましたが、ちょっとそぐわない感じです。 ヒントを頂いたので、 やはり、instrでloopさせました。

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

<>の後の8桁の数字の部分で改行したいという意味なら、以下のようなWordを使ったワイルドカード置換で簡単に文章を整形できます。 テキスト文書をワードに貼り付け、Ctrl+Hで置換ダイアログを出して、「オプション」ボタンをクリックして、検索する文字列の欄に「\<\>([0-9]{8})」置換後の文字列に「^13\1」と入力して「すべて置換」してください。

nagahaha
質問者

お礼

わざわざ有り難うございました。 やりたいことは質問のとおりで、ちょっと方向が違います。 お世話になりました。

関連するQ&A

  • 数字3桁を入力した際の変換について

    以前まではなっていなかったのですが 最近になって 3桁の数字を打って変換をすると地名が出てきてしまいます。 Wordなどで普通に文章を打ってる際に 数字なんかは半角にする事が多いので、全角で数字を打って変換で半角にするのですが その際に 例えば100と打って変換すると 東京都千代田区 が1番手に変換されます。 他にも例えば 843→佐賀県武雄市 125→東京都葛飾区 とかです。 なんとなく、もしかして郵便番号とか?と思っています。 Excelに郵便番号変換ウィザードが入ってるからかななんて思ってるのですが WordとExcelは別物ですしね… 原因が分からず困ってます。 100歳とか、 数字の後に個とか、枚とか 単位がつけば問題ないのですが 数字3桁のみを打つときに地名が出てきてしまってやっかいです。 別に 100だと東京都千代田区ですが 東京都千代田区を打つのに100を打って表示させようとか思わないので いっそ変換候補から消したいのですが方法はありますか?

  • 数字3桁のチェック

    C♯環境(.net2.0)です。 文字列が数字3桁で構成されているか確認したいと思っています。 「001」等、頭に0があってもokです。 マイナス等の記号が入っていたらNGです。 現在は、lengthが3か見てから、TryParseでintに出来るか見ている のですが、もう少しシンプルなやり方はないものでしょうか。 正規表現とかで出来るものですか? ご教授いただければ幸いです。 宜しくお願いします。

  • 6ケタの数字の前に、「0」(ゼロ)をすべて入力する方法を教えてください

    6ケタの数字の前に、「0」(ゼロ)をすべて入力する方法を教えてください。数百件あるので、ひとつひとつ入力するのは気が遠くなります。一度で、すべての6ケタ数字の頭に「0」(ゼロ)を入力できる方法をお願いします。

  • ポップ吉村さんの東京都あきる野市での場所は

    昔に現在の東京都あきる野市で一時期工場を開いていた時期か有ったかと思いますが現在のあきる野市のどの辺なのでしょうか。バイクが好きであきる野市在勤で調べているのですが・・ 個人情報に差支えない範囲で教えて頂ければと思います。

  • エクセルでの数字の抽出方法

    A列に数字3桁、4桁の数字が入っています。 各月毎で、頭1桁ごとの集計をとらなければなりません。 どうしたらいいのでしょうか? (例) A列     B列 107     2001/1 110     2001/10 307     2001/1 514     2001/2 601     2001/1 408     2001/5 104     2001/1 107     2001/5 605     2001/1 504     2001/2 「2001/1」の「1XX」が 2件 「2001/1」の「6XX」が 2件 というふうにしなければなりません。 どのような数式を使えばよいでしょうか。 データ数は30000件近くあります。 宜しくお願いいたします。

  • 紅葉のおすすめスポット

    東京都あきる野市近辺で紅葉のおすすめスポットが ありましたら、教えて下さい。

  • Access 会員番号4桁にする方法

    会員データをAccessで管理しております。 CSVファイルで送られてくるデータをAccessにインポートして 運用しております。 そこで、会員データは4桁の数字(0001・0002・・・)で 管理しているのですが、送られてくるCSVファイルは 頭の000がない状態で送られてきます。 この000を一括で付けるにはどのようにすればいいでしょうか。 会員データは0001から9999までランダムに1000件から2000件程度 送られてきます。 よろしくお願いします。

  • あきる野市の化石発掘場所

    東京都はあきる野市で、化石の取れる所があると聞きました。 場所などを知っている方がいましたら、教えてください。 なんべんもスイマセン!!

  • 正規表現

    こんなことってできますか? どなたかご教授お願いします。 秀丸エディタを使用しています。 「東京都千代田区神田1-1-1」 上記のような住所が300件くらいあるのですが、 「東京都千代田区神田 1-1-1」のように数字の部分 と本体の部分をタブで切り離したいと思っています。 正規表現を使うとできるかな?と思って色々調べて みたのですが、うまくできませんでした。 これができないと、手動での作業になってしまいます。 どなたか助けてくださ~い。。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • Excelで和暦の日付(数字のみ)を西暦に変換した

    Excel2016を使用しています。 表には和暦で数字のみ 520220 ←昭和52年2月20日 これを 西暦の日付に直したいです。 1977/02/20 月日で1桁のところは上記のように頭に 0 を入れて2桁にしたいです。

専門家に質問してみよう