ここから本文です

【至急お願いします】ExcelファイルとCSVファイルを条件に合わせて比較したいです

wtn********さん

2010/8/421:52:12

【至急お願いします】ExcelファイルとCSVファイルを条件に合わせて比較したいです

指定したExcelファイルとCSVファイルを見比べて、条件に合わせて○×を出力したいです。

<仕様>

ExcelファイルをA.xlsとします。
レコードは全部で10万件くらいです。
A列には住所が入っています(例:尼崎市南塚口町)
B列には地番が入っています(例:1-21)
C列には日付が入っています(例:昭和49年10月11日 ※数字が全角の場合あり
例えば昭和49年10月11日など)

縦にレコードは並んでいます。
よって65000件まではsheet1に、65001件~10万件はsheet2の先頭から格納

CSVファイルをB.csvとします。

レコードは100件くらいです。
シートは一つです。
シート名は住所になっています(例:尼崎市南塚口町)
A列には地番が入っています(例:1-21)
B列には日付が入っています(例:昭和49年10月11日
これは表示形式が日付です)
<やりたいこと>
A.xlsにボタンを作成します。
ボタンを押すとCSVファイルを選べるようになります。
そこでB.csvを選択します。

これ以降は内部処理です。
B.csvのシート名(住所)を読み取ります。

A.xlsのA列からそのシート名の住所を探します。

住所が同じなら、次にB.csvのA列の地番とA.xlsのB列の地番を見比べます。
次にB.csvのB列の日付とA.xlsのC列の日付を見比べます。

住所、地番、日付 3つが同じものだけを○ 違うものは×を出力したいです。


出力先はA.xlsの「結果」シートに出力したいです。
B.csvは比較に使用するだけで変更しません。

「結果」シートのレコード数はB.csvを基準とするため100件です。

(「結果」シートのイメージ)

尼崎市南塚口町 1-21 昭和49年10月11日 ○
尼崎市南塚口町 1-23 平成2年2月1日 ○
尼崎市南塚口町 2-11 大正2年11月1日 ×

※上記はB.csvには3レコードしか無かった結果です。

<注意点>
・A.xlsはレコード数が多いので2シートに分かれている、両シートを見る必要がある
・A.xlsのC列の日付は全角表示で数字部分が「11」や「11」と表記が違う場合あり
・A.xlsのsheet1、sheet2、B.csvの内容は変更しない
・比較は一行ごとです。一行が1レコードです。

長くて申し訳ございませんが、上記の作業をするマクロは作成できるでしょうか?

閲覧数:
1,169
回答数:
1
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

bar********さん

2010/8/422:54:28

まず、自分自身が問題をややこしくしている事に気付きましょう。
・ExcelファイルとCSVファイルを
・日付は全角表示で数字部分が「11」や「11」と表記が違う場合あり
・A.xlsのsheet1、sheet2、B.csvの内容は変更しない
なんてのは、全て仕様でも注意点でもありません。

・ExcelファイルとCSVファイルを
→csvをブックとして読み込めば、「ExcelファイルとCSVファイル」などというややこしい条件は氷解し、Excel内だけでのデータ比較になる

・日付は全角表示で数字部分が「11」や「11」と表記が違う場合あり
・A.xlsのsheet1、sheet2、B.csvの内容は変更しない
→日付を全角なり半角なりに変換したものをZ列とかの作業列に出力し、作業列で比較を行って、処理が終わったら作業列を削除すれば、内容は変更されない

と考えれば、マクロなんて使わず数式だけでも解けるほどの簡単問題

更に言えば、全一致で○、一部でも不一致なら×という単純処理なら
住所番地日付を結合したものを作業列に出力して
CSV側のデータも3つを結合した上で検索すれば、簡単手間無しで高速処理が可能だ。

この回答は投票によってベストアンサーに選ばれました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる