CSVをエクセルでアップデートする方法

このQ&Aのポイント
  • CSVファイルをエクセルで読み込み、会員番号のデータだけ上書きする方法について教えてください。
  • エクセルに関する知識がない私でも、簡単な操作で更新データを抽出し、元のデータを上書きすることは可能でしょうか?具体的な手順を教えてください。
  • 友人から届いた更新データをエクセルに反映させる方法を教えてください。会員番号が同じデータのみを更新したいです。
回答を見る
  • ベストアンサー

CSVをエクセルでアップデートしたいのですが

現在、ホームページに設置したデータベース検索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ファイルを表として見たり、ソートしたりするためにしか使ったことがない人間なので、もし私が望んでいる事が可能でしたら、メニューバーの「○○」から「×××」という項目に入って…などと、ステップを具体的に教えて頂けるとありがたいのですが…。

  • MORGEN
  • お礼率100% (466/466)

質問者が選んだベストアンサー

  • ベストアンサー
  • s-mariko
  • ベストアンサー率64% (33/51)
回答No.2

あんなアドバイスだけでは無責任な気がするので、一例を… 今回は 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 はどっかから調達してくださいね^^;。 こんな回答をここでしてよかったかな?(>_<)

MORGEN
質問者

お礼

完璧なお助けのご回答を頂きました!どうもありがとうございました!! gawkはVectorで簡単に見つかりましたので早速試させていただきましたが、本当ですねぇ、出来てしまいました。 まさに求めていたのはこれです!! 確かに、どなたからもなかなかお答えを頂けなかったのは「エクセルで簡単に」というのが無理ということなんだろうなとは思い初めていました。 しかしまあ、データを整理する時って、こういう処理が必要になることってよくあるような気がするんですが、Excelにはそういう処理をする機能って備わっていないんですね。 Accessとかなら出来るのかなとも少しは思ったんですが、そういうアドバイスもどなたからも頂いていませんしやっぱりダメなんでしょうね。 いやぁ、教えて頂いたスクリプト、他にも、例えばビデオライブラリの管理とか色んな事に流用できそうですし、とてもありがたいです! 私は普段は殆どMacしか触らないのでプロンプトなんて縁のない人間ですが、そんな私でも迷わずに操作できました。 バッチファイルを作ってしまったので、これからは作業は一発。夢のようです。 これだけのヘルプを頂いて、ポイントでしかお答えできないのが歯がゆいですが、この度は本当にありがとうございました!

その他の回答 (1)

  • s-mariko
  • ベストアンサー率64% (33/51)
回答No.1

なかなか回答がつかないのは、この作業をEXCELでやらせるにしても そんな簡単にはいかないからでしょう。少なくともマクロやユーザ関数 が必要になるかと思います。 この程度の文字列操作なら、簡単なスクリプトやアプリケーションを 作ったほうが早いですよ。 前者なら秀丸等のマクロを使う手もありますし、後者ならVBとかPerl とか…いろいろな方法があると思います。 周りに多少でも開発詳しい人が居れば、頼んでみてはどうでしょう? (私だったら作ってあげると思います^^;)

MORGEN
質問者

お礼

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

関連するQ&A

  • EXCELから1行を1枚の用紙に印刷する

    EXCELで作った名簿があります。 左から、氏名・住所・電話番号といった列があり次のようになっています。 氏名・  住所・         電話番号     東京一郎 東京都東京区東京町1-1 999-9999-9999 東京二郎 東京都東京区東京町1-2 999-9999-9998 東京三郎 東京都東京区東京町1-3 999-9999-9997   ・   ・   ・ 約100件ほどです。 この名簿で、1人分のデータ(1行分)を小さな紙 (A6) の1枚にそれぞれ印刷したいです。 例えば 1枚目に 氏名   東京一郎 住所   東京都東京区東京町1-1 電話番号 999-9999-9999 2枚目に 氏名   東京二郎 住所   東京都東京区東京町1-2 電話番号 999-9999-9998 3枚目に 氏名   東京三郎 住所   東京都東京区東京町1-3 電話番号 999-9999-9997    ・    ・ というようにです。 プリンターはA6でも打てるので大丈夫です。 各項目は太い罫線でかこみたいです。 件数は入力されているデーター分自動的にプリントできれば有難いです。 EXCELの機能、またはフリーウェア等でうまくできる方法を教えてください。 よろしくおねがいします。

  • CSVをテキストの表に変換

    csvデータをテキスト形式の表に変換できるフリーソフトを探しています。 以下のようなイメージです。 csvデータ 都道府県,市区,町村,郵便番号 東京都,千代田区,飯田橋,102-0072 東京都,千代田区,一番町,102-0082 東京都,千代田区,岩本町,101-0032 東京都,千代田区,内神田,101-0047 東京都,千代田区,内幸町,100-0011 ↓ テキストの表 ┌────┬────┬───┬────┐ │都道府県│市区 │町村 │郵便番号│ ├────┼────┼───┼────┤ │東京都 │千代田区│飯田橋│102-0072│ ├────┼────┼───┼────┤ │東京都 │千代田区│一番町│102-0082│ ├────┼────┼───┼────┤ │東京都 │千代田区│岩本町│101-0032│ ├────┼────┼───┼────┤ │東京都 │千代田区│内神田│101-0047│ ├────┼────┼───┼────┤ │東京都 │千代田区│内幸町│100-0011│ └────┴────┴───┴────┘ ※↑レイアウトが崩れていますが、等幅フォントで正しく見えればOKです。 こんなことが出来るソフトがあれば教えてください。

  • ファイルメーカーからCSVへのエクスポートについて

    こんにちは。 今、ファイルメーカーで問合せデータを作成していて 顧客番号を入力する所があります。 このデータを、CSVでDLすると、「000012345」という会員番号は、CSVでは、「12345」としか表示がされません。 この番号を「0000」も表示させるにはどのような設定が必要なのでしょうか? よろしくお願いします。

  • csvで順番の入れ替え

    perlでのCSVデータの並べ替えで質問があります。 0001 東京都 0002 千葉県 0003 埼玉県 0004 栃木県 という順番で保存されているcsvファイルの順番を 0001 東京都 0004 栃木県 0002 千葉県 0003 埼玉県 というように替える方法が知りたいのです。 ご存じの方がいらしたらよろしくお願いします。

    • ベストアンサー
    • Perl
  • ExcelでUTF-8のcsvデータを表示するには

    あるデータベースから出力したCSV形式のデータがあるのですが、 文字コードがUTF-8なので、直接Excelで開くと文字化けがあります。 なので、一度出力したcsvファイルの拡張子をtxtに変えて、 それをExcelから開くという作業をして対応しています。 (そうすると文字コードが選択できるので) しかしcsvをtxtに変えてExcelで開くと、 思いもよらぬところで改行されてしまい、 正しくデータが表示されません。 例)csvでそのまま開いたとき ユーザーコード 苗字 名前 住所 001    山田 太郎 東京都大田区鵜の木 1-2-3 002    高橋 愛子 東京都港区六本木2-3-4 ↓ txtに変換したのちにexcelで開いたとき ユーザーコード 苗字 名前 住所 001    山田 太郎 東京都大田区鵜の木 1-2-3                  ←余計な改行が発生 002    高橋 愛子 東京都港区六本木2-3-4 これを回避するために、一度csvで開いて、 セル内改行コードを空白と置き換えるという作業をしたのですが、 それでも上記のような改行が発生してしまっています。 UTF-8のcsvを文字化けなくExcelで開く方法は他にはないでしょうか? また上記方法の改善点はありますでしょうか? ご助言宜しくお願いします。

  • エクセルのデータをまとめたいのだけれど

    同じフォーマットのアンケート結果のデータが500シートくらいあって、それをひとつのシートにまとめたいのですが、どうすればいいのか思いつきません。どなたかご教授願います。 ちなみにフォーマットは、 住所 大阪市○○町 氏名 山田 花子 性別 女 こんなかんじのものです。これを 住所       氏名     性別 大阪市○○町 山田花子  女 東京都××区 鈴木太郎  男 こんな形のデータにまとめたいのです。 よろしくお願いします。

  • accessでcsvファイルをインポートする時…

    access 2003で質問です。 次のようなcsvファイルをインポートしたいと思っています。 (左から順に 個人番号,氏名,血液型,出身 となっているが、空欄になっているところもある) 001,A山太郎,A型,千葉県 002,B田次郎,北海道 C川三郎,O型,東京都 何も考えずにインポートすると、個人番号のフィールドに氏名が入ったり氏名のフィールドに血液型が入るフィールドが出てきます。 これを、個人番号がなければそこは空欄にするよう自動判別する方法はありますでしょうか? もしもありましたら、初歩からご教授願います。 (始めたばかりですので…)

  • エクセルでこんな事ってできますか?

    A 名前    B 郵便番号 C 住所   ・   ・ 山田 太郎   999-9999 東京都渋谷区1-1 山田 花子   999-9999 東京都渋谷区1-1   ・   ・   ・ というようなデータがあります。 苗字が同じで住所も同じ人の行を新しい行に取り出す事ってできますか?

  • エクセルでこんな事をしたいのですが、関数をどう使えばできるのかわかりません

    下記のような名簿表を作っています。 この名簿リストに書いてある人全員に郵送します。 しかし、ここで問題になっているのが、家族の人が違う行になっているため、同じ所に同じ資料が郵送されてしまいます。 そこで、同じ苗字で同じ住所の人を抽出したいのですが、どう関数を使ったらできるのでしょうか? A 名前    B 郵便番号  C 住所  大槻 太郎    999-9999 東京都渋谷区1  大槻 花子    999-9999 東京都渋谷区1  岡崎 太郎    998-9999 東京都品川区2  加藤 花子    998-9999 東京都品川区2  山田 太郎    990-9999 東京都台東区3  山田 花子    999-9999 東京都渋谷区2 例。上記の場合、大槻さんだけ抽出したいです。 扱っているデータが4000件ぐらいあって手作業では苦です。 助けてください!

  • エクセル 住所データの編集について

    エクセルの住所データを使って郵便バーコード印字をするのですが、手持ちのバーコード変換マクロでは郵便番号の列と番地だけ(例えば、「1-23-45」)の列を用意して変換します。ところが、持っている住所データには「東京都○○区○○町1-23-45」というデータになってしまっています。 郵便番号を利用して「東京都○○区○○町」というところまでデータから連続して除いて番地だけのセルにすることは出来ますでしょうか?もし解決策をご存知の方いらっしゃったら教えてください!宜しくお願いします。

専門家に質問してみよう