重複削除の疑問や悩み - ナレッジリーフ@知識の葉

Yahoo!知恵袋疑問や悩みを検索

知恵袋Q&Aで悩みを解決!

-PR-
  • スマートデバイス、PC、家電 > Office系ソフトウェア > Excel
  • Thu, 10 Oct 2019
  • 質問No. 8354785

解決
済み
Q 重複削除の疑問や質問

  • 閲覧数9
  • 質問総数3

A重複削除のQ&A回答一覧

    Yahoo!知恵袋

    • 投稿日時 - Thu, 10 Oct 2019 11:06:03
    • 閲覧数 9
    質問

    Excel 重複データ削除について

    重複データ削除を押しても削除されず、困ってます。

    昨年リスト一覧
    A氏名
    B郵便番号
    C住所
    D電話番号

    今年リスト一覧
    E氏名
    F郵便番号
    G住所
    H 電話番号

    となっています。

    条件付き書式で、重複する値で検索すると
    重複してるデータが、フォントが赤色になっています。

    昨年と今年のデータの中に、重複してない人は白色となっており、その白色の人だけを絞込みたくて、重複削除をしてみると、重複する値は見つかりませんでした。と表示されます。

    重複する値を削除するに...
    アンサー
    回答

    重複の削除は2つの表を比較できないので昨年の表と今年の表をコピーしてべつの表に縦に貼り付けて新しく4列の表を作ります。

    また条件付き書式の重複と重複の削除の重複では扱いが違うので条件付き書式の方は参考になりません。
    スマートデバイス、PC、家電 > Office系ソフトウェア > Excel
    詳しくはこちら
    • 同意数0(14-14)
    • 回答数2
    • 投稿日時 - Mon, 30 Sep 2019 12:13:33
    • 閲覧数 23
    質問

    エクセル集計について、ご教示お願い致します。 店舗毎に顧客来店回数の集計をしたいのですが、
    店舗毎のcsv(約50000レコード×14店舗分)から店舗毎のエクセルシートへ
    以下のようにデータ抽出がしたいです。
    お知恵をお貸しください。
    当方、関数は中級程度、記録マクロを研修受講のみのレベルです。
    Windows10、Excel2019(共有者は2016) です。

    csvデータ;
    顧客コード、顧客名、ランク、誕生日、来店日
    1111、aaaa、G、yyyy/mm/dd、1月10日
    1111、aaaa、G、yyyy/mm/dd、2月10日
    2222、bbbb、P、yyyy/mm/dd、3月20日
    2...
    アンサー
    回答

    VBAがあるブックの指定csvファイルが対象です。
    "test.csv"が対象の場合です。
    結果はVBAがあるブックの"Sheet1"です。

    Sub sample()
    Dim file As String
    Dim wb As Workbook
    Dim sws As Worksheet
    Dim dws As Worksheet
    Dim lastRow As Long
    Dim r As Long
    '
    file = "test.csv" '対象のcsv
    file = ThisWorkbook.Path & "" & file 'このブックと同じフォルダの対象のcsv
    Set dws = Sheets("Sheet1") '結果シート
    dws.Cells.Clear '結果クリア
    Set wb = Workbooks.Open(file) 'csvを開く
    Set sws = wb.Sheets(1) '元データシート
    sws.UsedRange.Copy dws.Range("A1") '元データを結果シートにコピー
    dws.Range("A:E").RemoveDuplicates Columns:=1, Header:=xlYes '顧客コードで重複削除
    dws.Range("A1:G1").Value = Split("顧客コード,顧客名,ランク,,誕生月,来店回数,来店日", ",") '新たな見出し'
    lastRow = dws.Range("A" & Rows.Count).End(xlUp).Row 'まとめシートのA列最終行
    For r = 2 To lastRow '注目行を2行目からA列最終行まで
    sws.Range("A:E").AutoFilter Field:=1, Criteria1:=dws.Range("A" & r).Value '注目行の顧客コードでオートフィルタ
    sws.Range("E2:E" & sws.AutoFilter.Range.Rows.Count).SpecialCells(xlCellTypeVisible).Copy '来店日の列で表示しているセルをコピー
    dws.Range("G" & r).PasteSpecial Paste:=xlPasteAll, Transpose:=True 'まとめシートのF列注目行から右に行列を入れ替えてペースト
    Next
    wb.Close False 'csvを保存せずに閉じる
    dws.Range("E2:E" & lastRow).Formula = "=TEXT(D2,""yyyy/mm"")" '誕生月
    dws.Range("F2:F" & lastRow).Formula = "=COUNT(G2:" & Cells(2, ActiveSheet.UsedRange.Columns.Count).Address(0, 0, 1) & ")" '来店回数
    dws.Range("C2:C" & lastRow).Formula = "=LOOKUP(F2,{0,1,10,18,30},{"""",""R"",""S"",""G"",""P""})" 'ランク
    dws.Range("C2:F" & lastRow).Value = dws.Range("C2:F" & lastRow).Value 'C:F列の式を値に
    dws.Range("D:D").Delete 'D列(誕生日列)削除
    End Sub
    スマートデバイス、PC、家電 > Office系ソフトウェア > Excel
    詳しくはこちら
    • 同意数-2(16-18)
    • 回答数1
    • 投稿日時 - Sun, 22 Sep 2019 18:26:51
    • 閲覧数 11
    質問

    複数のCSVファイルを同じフォルダに存在するExcel(xlsx)ファイルの
    特定のシートにマージしたく、
    一度に取り込めるマクロがありましたら教えて頂けませんでしょうか。 *csvファイルは約50個、それぞれ1000行ほど入力されています。
    *それぞれのcsvファイルには1行目に見出し行があります。
    *A列は文字列、I列は日付「2001/1/19 0:00:00」で取込み
    *取り込み先Excel
    ファイル名:マージ用.xlsx
    シート名:マージ用

    簡単なマージ方法は他のサイトでも参考になるものを見つけましたが、
    ①見出し行は1行目のみにしたい
    ...
    アンサー
    回答

    csvとマージ用.xlsxがあるフォルダが"C:sample"の場合です。
    VBAのあるブックと同じフォルダの場合は、
    'folder = ThisWorkbook.Path & "" 'このブックのフォルダ(ファイルがあるフォルダ)+""
    を有効にしてください。


    Sub sample()
    Dim folder As String
    Dim file As String
    Dim dwb As Workbook
    Dim dws As Worksheet
    Dim rng As Range
    Dim dt(1 To 256)
    Dim i As Integer

    folder = "C:sample" 'ファイルがあるフォルダ+""
    'folder = ThisWorkbook.Path & "" 'このブックのフォルダ(ファイルがあるフォルダ)+""
    file = Dir(folder & "*.csv") 'フォルダの中の最初のcsvファイル名
    If file = "" Then Exit Sub 'csvが無ければ終わり
    Set dwb = Workbooks.Open(folder & "マージ用.xlsx") '結果ブックを開く
    Set dws = dwb.Sheets("マージ用") '結果シート
    dws.Cells.Clear '結果シートクリア
    Set rng = dws.Range("A1") '読み込み位置(初期値=A1)
    For i = 1 To 256: dt(i) = xlGeneralFormat: Next 'データ形式を全部標準に
    dt(1) = xlTextFormat '1列目(A列)文字列
    dt(9) = xlYMDFormat '9列目(I列)YMD(年月日)形式の日付
    Do While file <> "" 'ファイル名がある間
    With dws.QueryTables.Add(Connection:="TEXT;" & folder & file, Destination:=rng) 'csvファイルを読み込み
    .AdjustColumnWidth = False
    .TextFileParseType = xlDelimited
    .TextFileCommaDelimiter = True
    .TextFileColumnDataTypes = dt
    .Refresh BackgroundQuery:=False
    .Delete
    End With
    If rng.Row <> 1 Then rng.EntireRow.Delete '読み込み位置の行が1でなかったら1行目削除
    Set rng = dws.Range("A" & Rows.Count).End(xlUp).Offset(1) '次の読み込み位置
    file = Dir '次のファイル名
    Loop
    dws.Range("I:I").NumberFormat = "yyyy/mm/dd hh:mm:ss" 'I列の書式設定
    dws.Cells.RemoveDuplicates Columns:=1, Header:=xlYes 'A列の値で重複削除
    dwb.Close True '保存して終了
    End Sub
    スマートデバイス、PC、家電 > Office系ソフトウェア > Excel
    詳しくはこちら
    • 同意数1(18-17)
    • 回答数2
    -PR-
    -PR-
    -PR-
    -PR-
    -PR-
    ページ先頭へ