• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:2つのCSVを比較して一致していないものを検出したいのですがヒントをい)

2つのCSVを比較して一致していないものを検出する方法

webuserの回答

  • webuser
  • ベストアンサー率33% (372/1120)
回答No.1

>ヒントをいただけないでしょうか? では、ヒントだけ。。。 1.比較の処理パターンを「マッチング処理」といいます。検索すれば流れ図などがいくらでも出てくると思います。 2.マッチングするには入力データがソート済である事が前提になります。 3.比較の対象項目の事を「マッチング・キー」と言います。 4.データのキーに重複が無い事を「1対」、重複がある事を「n対」と表現します。 5.「1対1」のマッチングは比較的簡単です。「1対n」や「n対n」になると少し面倒になります。しかし、基本は同じです。 6.「1対1のマッチング処理」とは、ソート済の2つのデータをまずは1件読み、データ1のキーが小さければデータ1を、データ2が小さければデータ2を、同じなら両方を読む、これを両方のデータの最後まで繰り返すという処理です。 その過程で、データ1のみに存在する、データ2のみに存在する、両方に存在するを判定できます。 7.キーが重複する場合、マッチングと同時に「キーブレイク処理」を行う必要があります。 8.入力データがソートされていないなら、「バブルソート」などで、一旦ソート済データにする必要があります。 これが、どんな言語ツールでも通用する、何も無い状態からイチから作る方法です。 既存のオブジェクトを利用して簡易的に作る方法もあります。 表の形式のオブジェクトにCSVのデータを全て読み込ませた後、オブジェクトに搭載された検索機能を用いて検索したりマッチングさせたり、それは使うオブジェクトによって異なります。

mr-r00
質問者

お礼

ありがとうございました。 参考になりました

関連するQ&A

  • VBScriptでテキストファイルの内容の間違い探しは出来るでしょうか

    VBScriptでテキストファイルの内容の間違い探しは出来るでしょうか? CSVをテキスト形式で読み込んでいるファイルなのですがごくごくたまに一部内容が違っています。 例: <Aテキスト> "AAAAA","BBB","CC" "DDDDD","EEE","FF" "GGGGG","HHH","II" <Bテキスト> "AAAAA","BBB","CC" "DDDDD","EEE","F8" "GGGGG","HHH","II" とほとんどあっているのですが一部違う行をみつけて別ファイルにその行を書き出したいのです。 CSV形式で見たときA列+B列の値が一致したもののC列データが正しいか確認したいのですがどういったアルゴリズムがいいのでしょうか? お願いします。

  • VBAでCSV内にある改行を取る方法

    あるシステムが吐くcsvファイルの項目の中に改行が入っているものがあります。 例) 01,aaa,bbb(改行)bbb,ccc(改行) 02,ddd,eee,fff(改行) 03,ggg(改行)ggg,hhh,iii(改行) このCSVファイルをエクセルのマクロで読み込んでシートに展開したい のですが、項目中にある改行で別レコードを認識してしまいます。 結果) A B C D ---+---+---+--- 01 aaa bbb  bbb ccc 02 ddd eee fff 03 ggg ggg hhh iii これを以下のようにしたいのですが・・・ A B C D ---+------+------+---- 01 aaa bbbbbb ccc 02 ddd eee fff 03 gggggg hhh iii どうやればよいでしょうか? ご教授お願いいたします。

  • Excel比較関数について教えてください。2

    下記のようにA列とC列を比較して、 一致した値が存在する場合、B列とC列を比較して、 E列に全て一致した場合は○、一致しない場合は×にしたいのですが教えてください。 また、A列にあってC列にない場合は、×を表示したいです。 A列 B列 C列 D列 E列 1 12345 aaa 12389 aaa A1とA3が一致&B1とD3が一致したので○ 2 12389 bbb 22222 bbb A2とC1が一致したが、B2とD1が一致しないので× 3 33333 bbb 12345 aaa A3の値がC列にないので空欄 教えてください。

  • Excel比較関数について教えてください。

    下記のようにA列とC列を比較して、 一致した値が存在する場合、B列とC列を比較して、 E列に一致した場合は、●一致しない場合は、空欄にしたいのですが教えてください。 A列 B列 C列 D列 E列 12345 aaa 12389 bbb A2と一致したので● 12389 bbb 22222 bbb 一致しないので空欄 33333 bbb 12345 aaa A1と一致したので●

  • excel2003 二つと一致したものを選ぶ関数

    いつもお世話になります。 素人が何かをするとすぐに壁に当ります。 よろしくお願いします。 二つのキーに一致したものを選べる関数はありますか? 例えば、 CD1 CD2 CD3 CD4 0001 aaa ddd ggg 0002 bbb eee hhh 0003 ccc fff iii 上記のデータがあると致しまして、 CD1の「0002」とCD4「hhh」が、一致して、 CD2の『bbb』を抜き出したいのですが・・・。 よろしくお願い致します。

  • csv形式のデータの一部を削除して、上書きする方法

    前回も似たような(?)質問をしたんですが 今回も質問させてください。CSVに関して(CSVだけというわけではありませんが) 以下のようなデータを読み込んで、配列変数に格納後... aaa,bbb,ccc,ddd eee,fff,ggg,hhh iii,jjj,kkk,lll mmm,nnn,ooo,ppp qqq,rrr,sss,ttt ↑のデータを、下のようなデータにして、保存しなおすにはどうすればよいでしょうか。(上から二列目を削除して前のデータに保存しなおす) aaa,bbb,ccc,ddd iii,jjj,kkk,lll mmm,nnn,ooo,ppp qqq,rrr,sss,ttt 変な質問でもうしわけございませんが、回答できるかたお願いします。

    • ベストアンサー
    • Perl
  • 検索VBAを教えてください。

    VBAの勉強中です。 超初心者です。 シート1のB3に入力した値を、シート2のデータベースのC列から検索して、その検索した値と同じ行のD列・E列・F列の値を、シート1のB4・ B5・B6に表示したいと思います。 <シート1>    A     B     C     D 1 2     3       あああ ←ここを入力すると 4       aaa   ←表示したい! 5       bbb   ←表示したい! 6       ccc   ←表示したい! <シート2>    A    B    C      D     E     F 1           あああ    aaa     bbb     ccc 2           いいい      eee     fff      ggg 3           ううう      hhh      iii       jjj 4           えええ     kkk      mmm     nnn 5             おおお     ooo     ppp     qqq findを使えばいいと聞きましたが、使い方がよくわかりません。 例を読みましたが、どう自分に生かせばいいのかわかりませんでした。 どなたか未熟な私に教えていただけませんか? どうぞよろしくお願いいたします。

  • セルの値を含む文字列を検索する方法

    エクセル2010を使っている者です。 セルの値を一部として含むかどうかを調べることはできますか? countifだとA列のセルとB列のセルの値が一致してないとならないし、findだと*aaa@tokyo.co.jp* のようにセルとして指定することができないし。。 例えば以下のような表でB列においてA列のそれぞれのセルについて値が含まれているか を調べたいと思っております。 よろしくお願いします。 A列              B列 aaa@tokyo.co.jp      aaa@tokyo.co.jp; bbb@tokyo.co.jo; ccc@tokyo.co.jp         bbb@tokyo.co.jp      ddd@tokyo.co.jo; eee@tokyo.co.jp; fff@tokyo.co.jp ccc@tokyo.co.jp      ggg@tokyo.co.jp; hhh@tokyo.co.jp; iii@tokyo.co.jp ・・・             ・・・・・・・

  • Excelでの帳票作成

    Excelで以下のようなシートがあります。 --------------------------- A列  B列 C列 D列 1 Name1 11111 2222 3333 2 Name1 44444 5555 6666 3 Name1 77777 8888 9999 4 Name2 aaaaa bbbb cccc 5 Name2 ddddd eeee ffff 6 Name3 ggggg hhhh iiii --------------------------- これを元に以下のようなシートを別々に作成したいです。 <シート1> Name1 11111 3333 Name1 44444 6666 Name1 77777 9999 <シート2> Name2 aaaaa cccc Name2 ddddd ffff <シート3> Name3 ggggg iiii つまり、元のシートのA列の内容(Name1,Name2,Name3)毎にシートを 作成し、A列、B列、C列をコピーしたいです。 上記のシート作成をマクロで自動化したいのですが、どのように行えばよいでしょうか? (VBAでも可) 以上、よろしくお願いします。

  • 【Excel2007】A列の値がB列に存在しないことを確認したい

    いつもお世話になっております。 Excel2007を使用しております。 次のような一覧があります。 A列   B列 aaaaa aaaaa bbbbb bbbbb ccccc ddddd ddddd fffff eeeee A列にはあるが、B列にはない値を取得したいと 思っております。 この例であれば、「ccccc」と「eeeee」を抜き出したいのです。 何か関数などで抜き出す方法がございましたら、 教えて頂けませんか? A列、B列ともに2000行程度あるため、調査に苦労しています。 ぜひよろしくお願いいたします。