• 締切済み

excel 特定の文字列を含むセルの削除または抽出

現在、私の業務の一環としてあるソフトの稼働率を調査しなければなりません。 そのソフト用の管理システムを使えれば楽なのですが有料(ウン十万円)のため導入できませんでした そこでexcelを用いてログの解析を行い、視覚化しようと考えました。 ところが、不必要な情報が多すぎて削除に手間取っています。 ログは一定の法則にしたがって記録されているので、文字列を指定してその文字列を含むセルのみ一括して削除(または抽出)できるとすごく楽になるのですが、 何か良い方法は無いでしょうか? 例えばA列に時間・ユーザー名・状況の順に書かれていて、 特定のユーザーのみを残すように他の行を削除したいといった感じです 例 (時間)(ユーザーA)(使用開始) (時間)(ユーザーB)(使用開始) (時間)(ユーザーC)(使用開始) (時間)(ユーザーA)(使用終了)     ↓ (時間)(ユーザーA)(使用開始) (時間)(ユーザーA)(使用終了)

みんなの回答

  • passes
  • ベストアンサー率26% (11/42)
回答No.4

マクロなら。 こんな感じ。 Sub test() Dim rng As Range Set rng = Worksheets("Sheet1").Range("a:a") imax = Application.WorksheetFunction.CountA(rng) j = 1 For i = 1 To imax If InStr(Cells(i, 1), "ユーザーA") > 0 Then Cells(j, 5) = Cells(i, 1) j = j + 1 End If Next End Sub

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 参考になるかどうか判りませんが・・・ ↓の画像で説明させていただきます。 Sheet1のデータをSheet2に抽出するようにしてみました。 Sheet1のD列を作業用の列として使用しています。 D2セルに =IF(B2=Sheet2!$A$1,ROW(A1),"") として、オートフィルで下へずぃ~~~!っとコピーします。 そして、Sheet2のA3セルに =IF(COUNT(Sheet1!$D$2:$D$1000)<ROW(A1),"",INDEX(Sheet1!$A$2:$A$1000,SMALL(Sheet1!$D$2:$D$1000,ROW(A1)))) B3セルに =IF(A3="","",INDEX(Sheet1!$C$2:$C$1000,SMALL(Sheet1!$D$2:$D$1000,ROW(A1)))) という数式を入れ、A3・B3セルを範囲指定し、B3セルのフィルハンドルで下へコピーすると 画像のような感じになります。 これで、Sheet2のA1セルにユーザー名を入力すると そのユーザー名の状況が表示されると思います。 尚、数式はSheet1の1000行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、参考になれば幸いですが、 的外れなら読み流してくださいね。m(__)m

  • passes
  • ベストアンサー率26% (11/42)
回答No.2

マクロを使わないんなら。 =IF(ISERROR(FIND("ユーザA",b2)),a1,a1+1) な感じでログのユーザAを含む行に番号を振って、vlookup関数で切り出せば抽出できますね。

zoe_falken
質問者

補足

ご回答ありがとうございます 捕捉いたしますとマクロは使用できます。 マクロを組む場合はどのように組めばよいでしょうか? 参考になりそうなURLがあれば教えてください

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

オートフィルターで オプション 「ユーザーA」を「含む」で、どうでしょうか

zoe_falken
質問者

補足

アドバイスありがとうございます。 オートフィルタは現在使用しています。 が、例の場合ではそれでいいのですが、実際のデータはデータ量が多いので非常に手間がかかるのです オートフィルタを使うと (1)オートフィルタを設定 (2)条件を「ユーザーAを含まない」に設定 (3)残りのセルを削除 の3段階になります これをマクロなりを用いて削除できると非常に手際よく行えると考えているのですが・・・

関連するQ&A