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

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

mitarashiの回答

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.4

AccessのクエリをVBSに載せ替えてみたという、実験的なコードで、実用性は疑問ですが、ご参考まで。(自分自身Accessの助け無しにこのSQLを書く才覚はありませんので) 最初の課題に沿っているつもりですが、実行例もご質問に書いていただけると助かります。二つ目の課題もAccess上ではやってみましたが... VBSは滅多に使わないので、お作法に則っておりませんが、ご容赦下さい。 Dim cn Dim rs Dim connectionString Dim csvFilePath Dim item Dim mySQL Dim fso, dstFile Dim buf Set cn = CreateObject("ADODB.Connection") Set fso = CreateObject("Scripting.FileSystemObject") Set dstFile = fso.CreateTextFile("c:\testfile.txt", True) csvFilePath = "C:\" 'CSVファイルにラベル(フィールド名)が無いとする connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" & csvFilePath & ";" _ & "Extended Properties=""Text;HDR=NO;FMT=Delimited""" cn.Open connectionString mySQL = "SELECT tableA.F1, tableA.F2, tableA.F3" _ & " FROM A.csv AS tableA LEFT JOIN B.csv AS tableB ON (tableA.F3=tableB.F3) AND (tableA.F2=tableB.F2) AND (tableA.F1=tableB.F1)" _ & " WHERE (((tableB.F3) Is Null));" Set rs = cn.Execute(mySQL) Do While rs.EOF = False buf= chr(34) & rs.fields(0) & """,""" & rs.fields(1) & """,""" & rs.fields(2) & chr(34) dstFile.WriteLine buf rs.MoveNext Loop dstFile.Close rs.Close cn.Close Set rs = Nothing Set cn = Nothing Set fso = Nothing

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行程度あるため、調査に苦労しています。 ぜひよろしくお願いいたします。