教えて! goo のコンテンツに対する取り組みについて

現在、私の業務の一環としてあるソフトの稼働率を調査しなければなりません。

そのソフト用の管理システムを使えれば楽なのですが有料(ウン十万円)のため導入できませんでした


そこでexcelを用いてログの解析を行い、視覚化しようと考えました。
ところが、不必要な情報が多すぎて削除に手間取っています。

ログは一定の法則にしたがって記録されているので、文字列を指定してその文字列を含むセルのみ一括して削除(または抽出)できるとすごく楽になるのですが、
何か良い方法は無いでしょうか?

例えばA列に時間・ユーザー名・状況の順に書かれていて、
特定のユーザーのみを残すように他の行を削除したいといった感じです


(時間)(ユーザーA)(使用開始)
(時間)(ユーザーB)(使用開始)
(時間)(ユーザーC)(使用開始)
(時間)(ユーザーA)(使用終了)
    ↓
(時間)(ユーザーA)(使用開始)
(時間)(ユーザーA)(使用終了)

gooドクター

A 回答 (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
    • good
    • 1

こんにちは!


参考になるかどうか判りませんが・・・
↓の画像で説明させていただきます。

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
「excel 特定の文字列を含むセルの削除」の回答画像3
    • good
    • 0

マクロを使わないんなら。



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

この回答への補足

ご回答ありがとうございます

捕捉いたしますとマクロは使用できます。

マクロを組む場合はどのように組めばよいでしょうか?

参考になりそうなURLがあれば教えてください

補足日時:2010/01/14 14:15
    • good
    • 0

オートフィルターで


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

この回答への補足

アドバイスありがとうございます。

オートフィルタは現在使用しています。
が、例の場合ではそれでいいのですが、実際のデータはデータ量が多いので非常に手間がかかるのです

オートフィルタを使うと

(1)オートフィルタを設定
(2)条件を「ユーザーAを含まない」に設定
(3)残りのセルを削除

の3段階になります

これをマクロなりを用いて削除できると非常に手際よく行えると考えているのですが・・・

補足日時:2010/01/14 10:19
    • good
    • 1

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

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

gooドクター

このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング