OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

テキストから文字列の抽出法

  • すぐに回答を!
  • 質問No.216758
  • 閲覧数357
  • ありがとう数0
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 13% (4/30)

テキストから文字列を抽出して、比較したいのですが、良いアプリケーションをご存じないでしょうか?
具体的には2つの異なるフォーマットのファイルがあり、それぞれに(同一の文字列かどうか)比較したい文字列は1行ずつソートされた形で含まれています。しかしその同じ行に時刻などの付加情報が含まれているため、行単位で比較することができないのです(行単位で比較できるアプリは知っています)。
文字列とはファイル名ですので、*.* の形で指定して、抽出できればと思うのですが...
もしご存知の方がいらっしゃいましたら、教えてください。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル9

ベストアンサー率 69% (51/73)

エクセルのマクロで可能です。

下にあるものをエクセルにセットします。
1.エクセルを開きます。
2.ツール-マクロ-新しいマクロの記録
を選びます。
3.メーセージをOK
4.表示された四角いボタンをクリック
5.消えたら、ツール-マクロ-マクロ
を選びます。
6.Macro1を選んで、編集をクリック
7.下のものが表示されたら、全て消去
Sub Macro1()
この上から、この下まで
End Sub

8.ここへ下のものを貼付ける
9.エクセルに戻ってツール-マクロ-マクロ
を選びます。
10.中にある「テキスト検索比較」
を選んで、実行

以上で準備完了です。

中身についてですが
1.検索する文字を指定します。
2.2つのファイルのうち1つ目を指定
3.2つ目を指定
4.検索結果を表示して終了
というものです。

結果は、ある時はその場所、無ければ0です。
text.txtを探したい時はそのまま入力
*.txtのようにワイルドカードは使えません。
.txtと指定してください。
2ファイルまでです。
開いた2ファイルを閉じても良ければ
処理を追加します。今は閉じません。
続けて処理する場合は2ファイルを
閉じてからにしてください。
(一番上の手順9からです。)
(もっと簡単にもなります。)
機能追加でディレクトリにある
全てのファイルを一括検査することは可能です。
その他要望があれば。
使ってみておかしいところなどあればそちらも。







この下をコピーしてください。
Sub テキスト検索比較()
Dim ファイル名1 As String, filenum As Integer, _
現在行 As Integer, 現在列 As Integer, _
最終行 As Integer, I As Integer, _
現在行退避 As Integer, 比較結果2 As Variant, _
比較結果3 As Variant
比較文字 = InputBox("比較する文字を入力してください。", "比較する文字", "")
ファイル名1 = Application.GetOpenFilename(filefilter:="テキスト,*.txt")
ファイル名2 = Application.GetOpenFilename(filefilter:="テキスト,*.txt")
Workbooks.OpenText FileName:=ファイル名1, StartRow:=1, DataType:= _
xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, Semicolon:=False, Comma:=False, _
Space:=False, Other:=False _
, FieldInfo:=Array(1, 1)
Workbooks.OpenText FileName:=ファイル名2, StartRow:=1, DataType:= _
xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, Semicolon:=False, Comma:=False, _
Space:=False, Other:=False _
, FieldInfo:=Array(1, 1)
Windows(1).Activate
Range("A1").Select
現在行 = ActiveCell.Row
現在列 = ActiveCell.Column
最終行 = ActiveCell.SpecialCells(xlLastCell).Row
最終列 = ActiveCell.SpecialCells(xlLastCell).Column
For I = 現在行 To 最終行
For I2 = 現在列 To 最終列
比較結果1 = InStrB(Cells(I, I2), 比較文字)
If 比較結果1 > 0 Then
比較結果1 = I2 & "列" & I & "行目"
I2 = 最終列
I = 最終行
End If
Next
現在列 = 1
Next
Windows(2).Activate
Range("A1").Select
現在行 = ActiveCell.Row
現在列 = ActiveCell.Column
最終行 = ActiveCell.SpecialCells(xlLastCell).Row
最終列 = ActiveCell.SpecialCells(xlLastCell).Column
For I = 現在行 To 最終行
For I2 = 現在列 To 最終列
比較結果2 = InStrB(Cells(I, I2), 比較文字)
If 比較結果2 > 0 Then
比較結果2 = I2 & "列" & I & "行目"
I2 = 最終列
I = 最終行
End If
Next
現在列 = 1
Next
MsgBox "ファイル1は: " & 比較結果2 & " ファイル2は: " & 比較結果1
End Sub
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 69% (51/73)

2つのファイルの形式は何ですか。 .xls .doc .txt .csv .html は比較可能です。 MS-Excelです。 他、エクセルで読み取り可能なもの。 OSやバージョンなども 教えていただければ何か分かることもあるかもしれません。 同じ文字(ファイル名)が、比較する互いのファイルに 含まれているか?が分かればいいのでしょうか。 (回答は、「含む」「含まない」) 処理 ...続きを読む
2つのファイルの形式は何ですか。
.xls
.doc
.txt
.csv
.html
は比較可能です。
MS-Excelです。
他、エクセルで読み取り可能なもの。
OSやバージョンなども
教えていただければ何か分かることもあるかもしれません。
同じ文字(ファイル名)が、比較する互いのファイルに
含まれているか?が分かればいいのでしょうか。
(回答は、「含む」「含まない」)
処理内容も教えてもらえますか。
補足コメント
jyuka

お礼率 13% (4/30)

はい、ファイル形式は 2 つとも txt です。
おっしゃられるように、同じ文字(ファイル名)が、
比較する互いのファイルに含まれているか?を知
りたいのです。
2 つのファイルが A, B とすると、
・ A にしか含まれない
・ B にしか含まれない
・ A, B 共に含む
を得たいのです。
私は Excel の知識は全くないのですが、簡単に実
現できるのでしょうか?
よろしくお願いします。
投稿日時 - 2002-02-14 21:59:51
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ