ギリギリ行けるお一人様のライン

下記のようなテキストファイルから、山田太郎の後ろの数値のみを、エクセルのシートに抜き出すにはどのようにしたらよいのでしょうか。

A1セルに30、A2セルに40、A3セルに60、のように入力したいです。よろしくおねがいします。

山田太郎 30点
aaaaaa30aaaaaaaaaaa
bbbbbb20bbbbbbbbbbb
ccccccccccccccccccc
山田太郎 40点
ssssss30sssssss
eeeeeee40eeeeeeeeee
fffffffffffffffffffffff
山田太郎 60点

A 回答 (2件)

例データ


山田太郎 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点
となりました。
    • good
    • 1
この回答へのお礼

ありがとうございます。大変参考になりました。

EOF()なんて関数があったのですね。
勉強になりました。

お礼日時:2005/11/18 20:44

>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
    • good
    • 0
この回答へのお礼

ありがとうございます。

改造を最小限にするなら、下記解答の
  Cells(i, "A") = s
この部分を除くだけですみました。

どうやら、わたしは
  Line Input #1, a
このへんの理解が欠けていたようです。

回答者様のおかげでスキルが少しアップしました。

お礼日時:2005/11/19 15:37

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報