質問: あるデータで重複しているものを省きたい access/excelいずれかを使用想定 もしいい方法があればお伺いしたいですmm 注文番号 注文日 商品名 価格 仕入れ先 出荷日 12345 2014/10/11 たまご 198 倉庫a 11月 13456 2014/11/13 牛乳 238 倉庫b 11月 ・ ・ ・ 上記xlsデータがあり、タイトルに準じて5000行ほどのレコードがあります。 (1行目がタイトル) データがきれいでないため、5000行の中で重複が混在しています。 accessであれば重複クエリーで重複したものだけをpickupはすぐにできるとおもいますが、 その方法ではなく、 重複したものは先にある行だけを残しそれ以外は除外するという方法は とれないでしょうか。 例:5000行あるが、重複しているデータを除くと4700行になる。 (重複している行は先頭を残して削除してダブらない行だけを出したい) ※重複となるパターン 注文番号 注文日 商品名 価格 の4項目が全く同じものが複数行ある 御手数をおかけします。
回答: こんばんは! 5000行程度であればexcelで問題ないと思います。 excelのフィルタの詳細設定で「重複レコードは無視する」という操作がありますので、 作業列を1列(g列)設け、g2セルに =a2&"_"&b2&"_"&c2&"_"&d2 という数式を入れフィルハンドルでダブルクリック → g列を範囲指定 → メニュー → データ → 「並び替えとフィルタ」の「詳細設定」 → 「重複レコードは無視する」にチェックを入れ 表示されているデータをsheet2にコピー&ペーストして完了です。 (sheet1のフィルタは解除してやります) 以上の一連の操作をvbaでやれば以下のようになります。 alt+f11キー → メニュー → 挿入 → 標準モジュール → vbe画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → excel画面に戻り(vbe画面を閉じて)マクロを実行してみてください。 (alt+f8キー → マクロ → マクロ実行です) sub sample1() 'この行から dim lastrow as long, ws as worksheet set ws = worksheets("sheet2") with worksheets("sheet1") lastrow = .cells(rows.count, "a").end(xlup).row .range("g1") = "ダミー" with range(.cells(2, "g"), .cells(lastrow, "g")) .formula = "=a2&""_""&b2&""_""&c2&""_""&d2" .value = .value end with .range("g:g").advancedfilter action:=xlfilterinplace, unique:=true range(.cells(1, "a"), .cells(lastrow, "f")).specialcells(xlcelltypevisible).copy ws.range("a1") ws.columns.autofit .showalldata .range("g:g").clear end with end sub 'この行まで これで↓の画像のような感じになります。m(_ _)m