プロが教える店舗&オフィスのセキュリティ対策術

現在、ホームページに設置したデータベース検索CGIに入れてある会員名簿のcsvファイルがあるんですが、
これがエクセルで

会員番号  氏名   郵便番号   住所             TEL
 1   鎌倉太郎 123-0001 東京都中央区架空町2-21-13 03-5123-0125
 2   市原三郎 456-0001 東京都中央区架空町1-51-13 03-5123-0125
 3   山田洋子 789-0001 東京都中央区架空町3-28-11 03-5123-0125
 4   船橋香織 876-0001 東京都中央区架空町4-24-14 03-5123-0125
 5   相模大介 321-0001 東京都中央区架空町5-21-10 03-5123-0125
 6   川崎花子 888-0001 東京都中央区架空町1-11-11 03-5123-0125

と表示されるようになっているとします。
ここに、更新されたデータだけ抽出された

 2   市原三郎 456-0001 東京都新宿区番外町4-55-66 03-5123-0125
 4   浜松香織 876-0001 静岡県三島市新天町5-12-10 052-123-0125
 6   川崎花子 444-0001 千葉県松戸市某乃町5-21-10 047-523-0125

というcsvファイルが友人からメールで届いたとしたら、このデータを読み込むことや、それに準じるいくつかの簡単な操作だけで、同じ会員番号のデータだけ上書きされるようにする事って出来ないでしょうか?

私はエクセルに関しては殆ど無知で、csvファイルを表として見たり、ソートしたりするためにしか使ったことがない人間なので、もし私が望んでいる事が可能でしたら、メニューバーの「○○」から「×××」という項目に入って…などと、ステップを具体的に教えて頂けるとありがたいのですが…。

A 回答 (2件)

なかなか回答がつかないのは、この作業をEXCELでやらせるにしても


そんな簡単にはいかないからでしょう。少なくともマクロやユーザ関数
が必要になるかと思います。

この程度の文字列操作なら、簡単なスクリプトやアプリケーションを
作ったほうが早いですよ。

前者なら秀丸等のマクロを使う手もありますし、後者ならVBとかPerl
とか…いろいろな方法があると思います。

周りに多少でも開発詳しい人が居れば、頼んでみてはどうでしょう?
(私だったら作ってあげると思います^^;)
    • good
    • 0
この回答へのお礼

こちらのアドバイスにもポイントを付けさせて頂きたいところなのに、良回答と同じ方のお答えに次点って付けられないんですね。
「こうすれば出来ますよ」という簡単な方法が無くても、「そんなに簡単には行かないでしょう」というお答えだけでも頂けたことはありがたいんですが…
それにしても、結果的に本当にスクリプトを書いて頂けるとは!
重ねてお礼申し上げます!

お礼日時:2001/09/16 01:21

あんなアドバイスだけでは無責任な気がするので、一例を…


今回は awk を使ってます。

元ファイルを original.csv、更新データを diff.csv とします。
以下のスクリプトファイルを update.awk として保存します。

--ここから---
BEGIN { FS="," }
{
if ( data[ $1 ]++ == 0 ) {
lines[ ++count ] = $0
number[ $1 ] = count
} else {
lines[ number[ $1 ] ] = $0
}
}
END {
for ( i = 1; i <= count; i++ )
print lines[ i ]
}
---ここまで---

で、プロンプトから
gawk -f update.awk original.csv update.csv > result.csv
で結果ファイル result.csv が出来上がりです。

あ、gawk.exe はどっかから調達してくださいね^^;。

こんな回答をここでしてよかったかな?(>_<)
    • good
    • 0
この回答へのお礼

完璧なお助けのご回答を頂きました!どうもありがとうございました!!
gawkはVectorで簡単に見つかりましたので早速試させていただきましたが、本当ですねぇ、出来てしまいました。
まさに求めていたのはこれです!!
確かに、どなたからもなかなかお答えを頂けなかったのは「エクセルで簡単に」というのが無理ということなんだろうなとは思い初めていました。
しかしまあ、データを整理する時って、こういう処理が必要になることってよくあるような気がするんですが、Excelにはそういう処理をする機能って備わっていないんですね。
Accessとかなら出来るのかなとも少しは思ったんですが、そういうアドバイスもどなたからも頂いていませんしやっぱりダメなんでしょうね。

いやぁ、教えて頂いたスクリプト、他にも、例えばビデオライブラリの管理とか色んな事に流用できそうですし、とてもありがたいです!
私は普段は殆どMacしか触らないのでプロンプトなんて縁のない人間ですが、そんな私でも迷わずに操作できました。
バッチファイルを作ってしまったので、これからは作業は一発。夢のようです。
これだけのヘルプを頂いて、ポイントでしかお答えできないのが歯がゆいですが、この度は本当にありがとうございました!

お礼日時:2001/09/16 01:14

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