同一CSVデータ行の削除No.04706
たろ親父 さん 05/05/22 09:12
 
こんにちは、また、教えてやってください。
前回の質問で、出来たCSVデータですが、一行に14項目のデータが入っていて改行
しています。CSVデータなのでカンマで区切っています。
全く同じデータが重複してあるのですが、これを、全てのデータから重複データを削
除するマクロを教えてください。データによっては、同じデータが3つ4つの物もあ
ります。二重のデータ削除だけでも良いのですが、・・・・・・14項目の内容は同
じ物です。

宜しくお願い致します。


[ ]
RE:04706 同一CSVデータ行の削除No.04707
山紫水明 さん 05/05/22 23:17
 
 たろ親父さん,こんばんは。

>全く同じデータが重複してあるのですが、これを、全てのデータから重複デー
>タを削除するマクロを教えてください。

 拙作で恐縮ですが,マクロライブラリの
http://hide.maruo.co.jp/lib/macro/linesimplify.html
をお試しください。

     では, (^^)/~
                                        山紫水明(ユーザー)
                                        SANSHISUIMEI

[ ]
RE:04707 同一CSVデータ行の削除No.04708
たろ親父 さん 05/05/23 11:56
 
こんにちは、山紫水明さん
このマクロは、秀丸ver5でないと動作しないのでしょうか?
ver4シリーズでは無理でしょうか?

宜しくお願い致します。

[ ]
RE:04706 同一CSVデータ行の削除No.04709
ENCODINGSHIFTJIS さん 05/05/23 12:16
 
参考情報

SQL を判るなら一発です、一時RDB に CSV を投入しなくとも
テキストのまま処理できます。ヘルプは日本語です

ダウンロード情報 Log Parser 2.2 日本語版
http://go.microsoft.com/?linkid=3034148

Log Parser はログファイル、XML ファイル、CSV ファイルといったテキストデータ
だけではなく、イベントログ、レジストリ、ファイルシステム、Active Directory
といった Windows オペレーティングシステム上のデータソースに対し一般的なクエ
リアクセスを提供する強力で多目的に利用できるツールです。

-------- 実施例
>  LogParser.exe  "SELECT DISTINCT A,B,C FROM H.CSV "
A  B  C
-- -- --
11 22 33
XX YY ZZ
11 22 38

統計情報:
---------
処理された要素: 8
出力された要素: 3
実行時間:       0.05 秒

---- 処理対象データ
>    TYPE H.CSV
A,B,C
11,22,33
XX,YY,ZZ
11,22,33
XX,YY,ZZ
11,22,38
XX,YY,ZZ
11,22,33
XX,YY,ZZ

--------------


[ ]
RE:04708 同一CSVデータ行の削除No.04710
山紫水明 さん 05/05/23 19:59
 
 たろ親父さん,こんばんは。

>このマクロは、秀丸ver5でないと動作しないのでしょうか?
>ver4シリーズでは無理でしょうか?

 説明に書いていますように動作確認は Ver.5 以外ではしていませんでした。
 73,74行目の

if( existfile( hidemarudir + "\\Sort.hmf " ) ) filter "Sort.hmf",
 "sort", "0000";
else run "sort /rec 8200 < con > con";

の行頭に // を付すか,削除した上で
run "sort /rec 8200 < con > con";
を挿入して試していただけますか。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:04710 同一CSVデータ行の削除No.04711
たろ親父 さん 05/05/28 11:44
 
こんにちは、山紫水明さま
ver5と、ver4.17共に、書かれたようにマクロファイルを変えて
試してみましたが、新しいデータと、古いデータの行数が全く同じですので、同じ内
容の複数項目(カンマ区切り)改行・・・・
のデータは、そのままみたいです。
以上、ご報告まで


[ ]
RE:04711 同一CSVデータ行の削除No.04712
Iranoan さん 05/05/28 12:15
 
 たろ親父さん今日は、Iranoan です。
> 全く同じデータが重複してあるのですが、これを、全てのデータから重複データを削
> 除するマクロを教えてください。
 このデータはソート済み、若しくはソートして構わないデータでしょうか?
もしそうであるなら、
http://hidemaruo.dip.jp:81/hidesoft/hidesoft_4/x02162.html#2165
が参考になると思います。

[ ]
RE:04711 同一CSVデータ行の削除No.04713
山紫水明 さん 05/05/28 20:03
 
 たろ親父さん,こんばんは。

>試してみましたが、新しいデータと、古いデータの行数が全く同じですので、
>同じ内容の複数項目(カンマ区切り)改行・・・・のデータは、そのままみたいで
>す。

 もしかしたら,ご要望を誤解しているのかも知れません。重複した行だと思い
ましたが,1行の中の重複したデータを削除するということでしょうか。
 こういう場合,簡単なサンプルを示していただくとわかりやすいと思います。
 以下はそういうことで作って見ました。完璧ではないかも知れません。

//-------------------------------------------------------
//検索結果の表示を「範囲選択」にして実行
//disabledraw;  //スピードアップしたいときは「//」を削除
gofiletop;
while( code != eof ) {
    golinetop2;
    while( #i < 14 ) {
        #bx = x; #by = y;
        #line = lineno;
        searchdown2 ",";
        if( !result ) goto End;
        if( lineno > #line ) break;
        #ex = x; #ey = y;
        $a= gettext( #bx, #by, x, y );
        while( 1 ) {
            searchdown $a;
            if( result && lineno == #line ) {
                delete;
                if( code != 0x0d ) delete;
            } else break;
        }
        moveto #ex + 1, #ey;
    }
    movetolineno 1, #line + 1;
}
End:
replaceallfast ",\\n", "\\n", regular;
gofiletop;
endmacro;
//-------------------------------------------------------

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:04709 同一CSVデータ行の削除No.04714
たろ親父 さん 05/05/29 21:23
 
ENCODINGSHIFTJISさん 
ありがとうございます。
sqlは只今勉強中です。
今ひとつ理解できていません。
勉強してやってみます。

たろ親父

[ ]
RE:04712 同一CSVデータ行の削除No.04715
たろ親父 さん 05/05/29 21:28
 
Iranoanさん
ありがとうございます。
ソートは問題ないです。
一行に12項目ほどのカンマ区切りデータ(csv形式)があり
各行の最後は改行してあります。
処理のミスでなぜか全く同じデータがいくつも点在しています。
同じ内容のデータを一つにだけしたいのです。
データ総数は8000くらいです。(行)
一行(いとつのデータは文字数ですと100文字から200文字(全ての文字数)カンマ等
も入れて・・・・・です。

教えて頂いた、マクロを試してみます。
ありがとうございます。

たろ親父

[ ]
RE:04713 同一CSVデータ行の削除No.04716
たろ親父 さん 05/05/29 21:55
 
山紫水明さん
いつもありがとうございます。
一行に14項目のデータ(カンマ区切り)があり最後に改行してあります。
同じ形式のデータが数千行あるのですが、データ処理中にあやまって
全く同じ項目、内容のデータの重複してるものが、いくつもあり、全く同じデータを
一つだけ残したいのです。

111,aaa,bbb,222・・・・・・・・・・(br)
123,bbb,ccc,456・・・・・・・・・・(br)
111,aaa,bbb,222・・・・・・・・・・(br) ←1行目と同じデータ(不要削除)

上記のような感じです。

マクロ使わせていただいてみます。
ありがとうございます。

たろ親父

[ ]
RE:04716 同一CSVデータ行の削除No.04717
山紫水明 さん 05/05/29 22:20
 
 たろ親父さん,こんばんは。

>111,aaa,bbb,222・・・・・・・・・・(br)
>123,bbb,ccc,456・・・・・・・・・・(br)
>111,aaa,bbb,222・・・・・・・・・・(br) ←1行目と同じデータ(不要削除)

 やはり最初に考えたとおり行単位での比較でしたか。それなら,ソートしても
しなくても拙作マクロでできるはずだと思いますが。上記例では2行になります。
 さらに,上記例をコピーを繰り返して1万行ほどにして実行してみましたが,
やはり2行になります。
 何か別の要因があるのかも知れませんね。

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:04717 同一CSVデータ行の削除No.04718
たろ親父 さん 05/05/31 16:48
 
山紫水明さん ありがとうございます。
調べてみます。

たろ親父

[ ]