[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『メモ帳データをエクセルで処理したい』(米)
今回限りの処理なのですが、 膨大な量があるため手作業だと出来ません。。 エクセルでメモ帳のデータを集計したいのですが、 それは可能でしょうか?
メモ帳に、 = ZZZZZ =aaabbbccc;dddeeefff;ggghhhiii;jjjkkklll = YYYYY =aaabbbccc;mmmnnnooo;pppqqqrrr;jjjkkklll 以下数百行程続く。。
上記のようなメモがかかれています。 ※ = aaabbbccc;dddeeefff;ggghhhiii;jjjkkklll というのは";"で区切っているという意味です。
このメモ帳をエクセルで集計したいと思っております。 ZZZZZ や = YYYYY ←この部分と、";"で区切られている = aaabbbccc;dddeeefff;ggghhhiii;jjjkkklll ←の部分でマトリックスを作りたいです。
【希望の形】 A B C D E F G 1 aaabbbccc dddeeefff ggghhhiii jjjkkklll mmmnnnooo pppqqqrrr 2 ZZZZZ ○ ○ ○ ○ 3 YYYYY ○ ○ ○ ○ 以下続く
aaabbbccc達はメモ帳データでは被っている所もあるので、 そこを統合したい。 ZZZZZやYYYYYはみんなバラバラです。
マトリックスにして、A列のものがB1他列1のものとで、 使用されていたら"○"を入れたいです。
これはエクセルで可能でしょうか? マクロか何かを作らなければできないでしょうか? aaabbbcccのところが膨大な量すぎて被っているのは1つにし上記のように表示させるのも難しいです。。
どなたかご教授ください、宜しくお願いします。。
【訂正】 メモ帳データを少し変えてエクセルにコピペしたところ、 ZZZZZたちのところはA列に、その他=aaabbbccc;〜のところはB列になりました。 ";"ごとにくぎってかぶっているところはまとめて1つで表示・・ をエクセルの機能でできるでしょうか?
(米)
メモ帳というか、テキストファイルでしょうか。 提示例の形式のファイルを処理するサンプルです。
Sub Sample() Cells.Clear '★ VBE の 参照設定で Microsoft Scripting Runtime にチェック Dim fso As New Scripting.FileSystemObject Dim dic As New Scripting.Dictionary
Dim dLines dLines = Split(fso.OpenTextFile("D:\data.txt").ReadAll(), vbNewLine) '★ 実際のファイルパスに変更 Dim dts, ky, c, r As Long, dLine r = 1 For Each dLine In dLines r = r + 1 If Len(dLine) - Len(Replace(dLine, "=", "")) <> 2 Then MsgBox r & "行目のデータ形式が想定と異なっています。:[" & dLine & "]" Else dts = Split(Replace(dLine, "=", ";"), ";") Cells(r, "A").Value = Trim(dts(1)) For c = 2 To UBound(dts) ky = Trim(dts(c)) If ky <> "" Then If Not dic.Exists(ky) Then Cells(1, dic.Count + 2).Value = ky dic(ky) = dic.Count + 2 End If Cells(r, dic(ky)).Value = "○" End If Next End If Next End Sub (Mook) ・・・署名忘れてました。
とりあえず > ";"ごとにくぎってかぶっているところはまとめて1つで表示・・ の所は、「区切り位置」で区切り文字として指定すると分けられると思います。
エクセルのバージョンは何ですか?
(HANA)
最初のレスの方、HANAさん、 お早いレスありがとうござます、嬉しいです。 ファイル名を実際のものに変えて実行してみましたが 「コンパイルエラー ユーザー定義型は定義されていません」 と表示になってしまいました。
HANAさん、 バージョンは2003を使用しております。
とりあえずエクセルにコピペしたものをいじってみたところ、 A B C D E 1 2 ZZZZZ aaabbbccc dddeeefff ggghhhiii jjjkkklll 3 YYYYY aaabbbccc jjjkkklll mmmnnnooo pppqqqrrr 以下続く
";"でわけたものは1つ1つのセルにすることができました。 なんとかこのあと希望通りのものにしたいのですがこのあとどうすれば良いか分からないです。。。
(米)
「VBE の 参照設定で Microsoft Scripting Runtime にチェック」 をしていないのではないでしょうか。 こちらでは動作確認しています。
あと、エラー時はエラーが出た行を記載下さい。 (Mook)
> 今回限りの処理なのですが、 って事なんで、テキトーなコードですが。。。
'------ Sub 米() Dim dic As Object, tbl As Variant, x As Variant Dim i As Long, ii As Long Set dic = CreateObject("Scripting.Dictionary") With Sheets("Sheet1") '★データがあるシート tbl = .Range("A1:E" & .Range("A" & Rows.Count).End(xlUp).Row).Value End With
For i = 2 To UBound(tbl, 1) For ii = 2 To UBound(tbl, 2) If tbl(i, ii) <> "" Then If Not dic.Exists(tbl(i, ii)) Then dic(tbl(i, ii)) = dic.Count + 1 End If End If Next Next
ReDim x(1 To UBound(tbl, 1) + 1, 1 To dic.Count + 2) For i = 2 To UBound(tbl, 1) x(i, 1) = tbl(i, 1) For ii = 2 To UBound(tbl, 2) If tbl(i, ii) <> "" Then x(1, dic(tbl(i, ii)) + 1) = tbl(i, ii) x(i, dic(tbl(i, ii)) + 1) = "○" End If Next Next
With Sheets("Sheet2") '★結果を書き出すシート .Cells.ClearContents .Range("A1").Resize(UBound(x, 1), UBound(x, 2)).Value = x End With Set dic = Nothing End Sub '------
シート名を合わせて実行してみて下さい。
手作業で面倒かもしれませんが、「今回限り」と言う事ですし C,D,E列のデータを B列の下に移動。 それに合わせてA列のデータもコピーして、表を完成させたら ピボットテーブルで集計 しても良いかもしれません。
集計すると、個数が表示されますので 表示形式で「○」を表示するか 一旦別の所へ値貼付してから「○」に置換。
(HANA)なんだ、署名忘れはMookさんでしたか。
Mookさん、 エラーが出た行は Dim fso As New Scripting.FileSystemObject こちらになります。
HANAさん、 シート名を変え実行してみました。 途中までは集計し"○"が入っているのですが、 F列からあとは集計せずの状態です。。
現在進行形ですみません、 自力でやってみたところ重複しているaaabbbcccのとこを1つずつにまとめることにできました。
▼現在の状態 A B C D E F G 1 aaabbbccc dddeeefff ggghhhiii jjjkkklll mmmnnnooo pppqqqrrr 2 ZZZZZ 3 YYYYY 以下続く
"○"はまだ入力していませんが、 関数を入力していけば○をつけれるかも?という状態です。
お二方、マクロを書いて頂いて本当にありがとうございます。。 もしかしたら残りは関数で完成するかもです。
(米)
>F列からあとは集計せずの状態です。。 サンプルデータがE列までしかなかったので >>tbl = .Range("A1:E" & .Range("A" & Rows.Count).End(xlUp).Row).Value ここで、E列までの範囲を処理してます。
>▼現在の状態 までできたのでしたらもしかしたらこんな感じで。。。? [[20120303140243]] 『複数のデータの中からデータを抽出してカウントす』(ゆき)
あ、A列重複なしなら 普通にCOUNTIF関数でいけそうですね。
(HANA)
HANAさん、 =IF(ISERROR(HLOOKUP(B$1,元データ!2:2,1,0)),"","○") このような関数を入れて上手く○を入れることが出来ました(*^o^*)
大変お騒がせしてしまい申し訳ないです。 もっとExcelの機能を使いこなせるようにします。
マクロまで作っていただいてしまい、申し訳ないです。 そちらの方も作れるようになれたらと思います。
本当にありがとうございました!
(米)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.