• ベストアンサー

【VBA ・ エクセル】 テキストファイルから特定情報をぬきだすには

下記のようなテキストファイルから、山田太郎の後ろの数値のみを、エクセルのシートに抜き出すにはどのようにしたらよいのでしょうか。 A1セルに30、A2セルに40、A3セルに60、のように入力したいです。よろしくおねがいします。 山田太郎 30点 aaaaaa30aaaaaaaaaaa bbbbbb20bbbbbbbbbbb ccccccccccccccccccc 山田太郎 40点 ssssss30sssssss eeeeeee40eeeeeeeeee fffffffffffffffffffffff 山田太郎 60点

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

例データ 山田太郎 30点 aaaaaa30aaaaaaaaaaa bbbbbb20bbbbbbbbbbb ccccccccccccccccccc 山田太郎 40点 ssssss30sssssss eeeeeee40eeeeeeeeee fffffffffffffffffffffff 山田太郎 60点 これをメモ帳に貼り付け、名前をtest7.txtで保存しました。名前は自由です。 エクセルのVBEに標準モジュールに Sub test01() s = "山田太郎" i = 2 Open "C:\Documents and Settings\XXXX\My Documents\test7.txt" For Input As #1 While Not EOF(1) Line Input #1, a If Left(a, Len(s)) = s Then Cells(i, "A") = s Cells(i, "B") = Right(a, Len(a) - Len(s)) i = i + 1 End If Wend Close #1 End Sub を貼り付け、実行しました。 アクチブシートに A列  B列 山田太郎 30点 山田太郎 40点 山田太郎 60点 となりました。

hikiko
質問者

お礼

ありがとうございます。大変参考になりました。 EOF()なんて関数があったのですね。 勉強になりました。

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

その他の回答 (1)

回答No.2

>A1セルに30、A2セルに40、A3セルに60、のように入力したいです。 と、「山田太郎吉 40点」 などという名前の人を除外する必要があるかと思い、 No.1さんのを少し改良しました。 Sub test01() Dim score As String Dim s As String Dim i As Integer Dim a As String Dim fNo As Integer fNo = FreeFile s = "山田太郎" i = 1 Open "C:\tmp\test.txt" For Input As fNo While Not EOF(1) Line Input #1, a If InStr(1, a, s) = 1 Then score = Trim(Replace(Mid(a, InStr(1, a, s) + Len(s)), "点", "")) If IsNumeric(score) Then Cells(i, "A") = score End If i = i + 1 End If Wend Close fNo End Sub

hikiko
質問者

お礼

ありがとうございます。 改造を最小限にするなら、下記解答の   Cells(i, "A") = s この部分を除くだけですみました。 どうやら、わたしは   Line Input #1, a このへんの理解が欠けていたようです。 回答者様のおかげでスキルが少しアップしました。

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

関連するQ&A

  • エクセルでお聞きしたいことがあります。

    エクセルでお聞きしたいことがあります。 例えばセルA1に山田と入力してセルB2に太郎と入力します。 そしてセルA3に =A1&B2 と入力すると山田太郎となりますが、 これを苗字と名前の間に空白を入れたいです。→ 山田 太郎 初歩的な質問ですが宜しくお願いします。

  • Excelで複数行の置き換えを行いたい

    Excelで複数行の置き換えを行いたいと考えています。 例えば、Excelのシートの中身が aaaaaa bbbbbb cccccc bbbbbb aaaaaa bbbbbb であったとします。このとき、 aaaaaa bbbbbb を zzzzzz vvvvvv に置き換えて、 zzzzzz vvvvvv cccccc bbbbbb zzzzzz vvvvvv というようにしたいです。 なにか良い方法はないでしょうか?

  • エクセルの質問

    例えばメモ帳に、 aaaaaa,,111111,,222222 bbbbbb,,333333,,444444 あるとして、これを2行まとめてコピーしてエクセルに貼り付けると、 A1にaaaaaa,,111111,,222222 A2にbbbbbb,,333333,,444444 と入ってしまいます。 これを、 A1にaaaaaaB1に,,C1に111111D1に,,E1に222222 A2にbbbbbbB2に,,C2に333333D2に,,E2に444444 と貼り付けられる何か良い方法はありませんでしょうか? なぜ行はA1、A2とセルを分けて入るのに列は分かれてくれないのでしょうか? 分かる方是非教えてください。

  • エクセルでこんなのをつくりたいのですが、、

    エクセルでこんなのをつくりたいのですが、、 こんばんわ。エクセルで以下のようなものを作ろうと、参考書片手にがんばっている者です。 例1) ・シート1のセルA1に『山田』と入力 ・同じくシート1のセルA2に『太郎』と入力 ↓ ・シート2のセルA1に『山田』、A2に『太郎』と赤文字で表示 例2) ・シート1のセルA1に『山田』と入力 ・同じくシート1のセルA2に『一太郎』と入力 ↓ ・シート3のセルAに『山田』、A2に『一太郎』とサイズ20Pで表示 つまり、シート1に入力した文字の文字数によって、それぞれ、違う文字体裁が設定してあるシートに表示させようとしています。 条件付書式?それとも文字を抜き出す関数なのかと考えましたが、多分、これはVBAをつかわないとできない事なのでわと思い質問させていただきました。 よろしければ、参考になるサイト、ヒントなどありましたら、教えてください。お願いします。

  • テキストをコピーしてエクセルのセルに数字だけ貼には

    お世話になります。 どなたかお詳しい方がいらっしゃいましたらお助けください。 下記のテキストファイルのデータをコピーして (162.8 -187.5 -100) (158.8 -46.117 -25.655) エクセルのシートに下記のように貼り付けるにはどうしたらよいでしょうか? A1 B1 C1 162.8 -187.5 -100 158.8 -46.117 -25.655 ()を外して一発で数値だけを各セルに貼り付けたい。

  • エクセルでセルの連結の逆

    エクセルでA1に「山田」、B1に「太郎」と入っていて、「山田太郎」としたい場合には =A1&B1 と入力し、セルを連結させますよね。 それの逆で、すでにA1に「山田 太郎」と入っているものを「山田」と「太郎」にわけることはできますでしょうか。 ちなみに「山田」と「太郎」の間にはスペースが入っています。

  • エクセルVBAで、数字をテキストファイルに書き出したい

    print #1,cells(1,1) のようにセルの値をテキストファイルに書き出しています。 セルには、6が入力されていて、表示は6.00 にしてありますが、書き出すと当然6になってしまいます。セルの書式を、文字列にすればいいのでしょうが、入力や計算の都合で、数値のままにしたいのです。見えている通りにテキストに書き出すには、どのようにしたら良いですか? よろしくお願いいたします。

  • エクセル上のVBA

    当方、VBAまるっきり初心者です(触りはじめて3日くらい)。 エクセルはある程度理解しているつもりですが… バージョンはエクセル2000です。 他シートのセルのひとつに入力すれば、 別シートのセルがそれを参照したうえで 値として表示出来るようにならないでしょうか。  今のところ、以下のような状況です。 step01 sheet1のセルA1に任意の数値(整数限定です)を入力。 step02 sheet2のセルA1に、sheet1のセルA1の数値を用いて     MOD関数で余りを出す。 step03 sheet2のセルB2に以下のVBAによって     step02の余りを値として表示。      Private Sub Worksheet_Change(ByVal Target As Range)        Range("b2").Value = Range("a1")      End Sub  これだとsheet1の数字を変えても、 sheetの切替後sheet2のセルB2に 表示される値が変わってくれません。  最初の入力(step01の入力)をおこなえば sheet2のセルB2まで値が変わってくれるような方法を 教えていただけないでしょうか。  拙い説明で申し訳ありませんが、よろしくお願いします。

  • エクセル/行選択の仕方を教えてください。

    はじめまして。 エクセルで、3行ごとに選択し、選んだ情報を列に移す作業をしたいのですが 1800行あり手で選択するのが大変です。 行いたい作業は以下の通りです。 A列 AAAAAA BBBBBB CCCCCC AAAAAA BBBBBB CCCCCC AAAAAA BBBBBB CCCCCC AAAAAA ↓ A列 B列 C列 AAAAAA BBBBBB CCCCCC AAAAAA BBBBBB CCCCCC AAAAAA BBBBBB CCCCCC 一行一行選択して列に移すのではなく選択できる方法がありましたら 是非ご教授ください。 よろしくお願いいたします。

  • エクセルのデータを一部抽出する方法をお教えください

    こんにちは。宜しくお願い致します。 エクセルのA列に以下の番号が入っています。  A  ――――――― 1|AAAAAA-01 2|AAAAAA-02 3|AAAAAA-03 4|BBBBBB-01 5|BBBBBB-02 6|BBBBBB-03 7|CCCCCC-01 8|CCCCCC-02 9|CCCCCC-03 10|・ 11|・ 12|・ 同じ番号にそれぞれ「-01」「-02」「-03」がついてしまっています。 この情報で、「-01」のみの行を抽出したいのですが、難しく考えてしまったせいか、上手く行きません。 エクセルにお詳しい方、方法を教えて下さい。 宜しくお願い致します。