[[20170609224044]] 『基準表に対して該当しないデータの抽出』(シャキン) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『基準表に対して該当しないデータの抽出』(シャキン)

よろしくお願いします。
12ヶ月の表があります。1月の表を基準にして、
2〜12月にある1月にはないデータを抽出したいのですが?

1月 2月 3月 4月 〜 12月
A  B   F    B
B  A   E    C
C  C   D    G
D   D   B   A
E   E   C   H   
   F  G  D
      K  L
      
この場合1月を基準にして、1月のEの下に2月のF
3月のGK、4月のHLを表示させたいのですが。
分かりにくいかもしれませんが、簡単に言うと1月の表に無いデータを
抽出したいのです。
実際には盾列1月は150個位で12月には200個位になります。
並び順も毎月違います。ひと月の中で重複することはありません。

< 使用 Excel:Excel2013、使用 OS:unknown >


すべての月データをA列にコピペしてから重複の削除してはどうでしょうか。

(マナ) 2017/06/09(金) 23:44


回答ありがとうございます。

重複データの削除ではなく
重複データを1月の表に表示させたいのですが。

よろしくお願いします。
(シャキン) 2017/06/10(土) 08:16


>簡単に言うと1月の表に無いデータを
>抽出したいのです。


>重複データを1月の表に表示させたい

矛盾していませんか?
何度も読み返しているのですが、何をしたいのかわからなくなりました。

(マナ) 2017/06/10(土) 09:01


ごめんなさい、(まな)さん

出かける前で、よく読まないで書き込みしてしまいました。

>重複データを1月の表に表示させたい は書き間違いです。

「重複してないデータを1月の表に追加表示したい」でした。

よろしくお願いします。

(シャキン) 2017/06/10(土) 16:03


>「重複してないデータを1月の表に追加表示したい」でした。

ならば、「重複の削除」でもよいのではありませんか。

(マナ) 2017/06/10(土) 18:24


Sub main()
'A1=1月、L1=12月と記入されているレイアウトが前提
    Dim j As Integer, c As Range
    For j = 2 To 12
        For Each c In Columns(j).SpecialCells(xlCellTypeConstants)
        If c.Row > 1 Then
                If Range("A:A").Find(c.Value, , xlValues, xlWhole) Is Nothing Then
                    Range("A" & Rows.Count).End(xlUp).Offset(1).Value = c.Value
                End If
        End If
        Next c
    Next j
End Sub
(mm) 2017/06/12(月) 10:23

私の質問の仕方が駄目なのが原因で余計な時間をとらせてすいません。

それぞれのデータには項目列がありそれも抽出したいので、
削除ではだめなんです。

本当は表を入力できればいいんですが、入力の仕方もわからない
初心者ですいません。(そのため例の表もガタガタです)

(mm)さんのは私には無理です。(-_-;)

本当にご迷惑おかけしました。もう少し勉強して出直します。
(シャキン) 2017/06/12(月) 17:59


>それぞれのデータには項目列がありそれも抽出したいので、
>削除ではだめなんです。

だめな理由にならないと思いますが、
今までに「重複の削除」を使ったことがありますか?

(マナ) 2017/06/12(月) 18:55


 VBA
 Sub test()
    Dim a, i As Long, ii As Long
    With Cells(1).CurrentRegion
        a = .Value
        With CreateObject("Scripting.Dictionary")
            .CompareMode = 1
            For ii = 1 To UBound(a, 2)
                For i = 2 To UBound(a, 1)
                    If a(i, ii) <> "" Then .Item(a(i, ii)) = Empty
            Next i, ii
            a = Application.Transpose(.keys)
        End With
        .Columns(1).Offset(1).Resize(UBound(a, 1)).Value = a
    End With
End Sub

 1) Alt F11 でVBE(Visual Basic Editor)を起動
 2) [挿入] - [標準モジュール] 
 3) 出てきた画面右側に上記, Sub test() から End Sub までを貼り付け
 4) Alt + Q でExcel画面に戻る。
 5) Alt + F8 で test を選択して[実行]
(seiya) 2017/06/12(月) 19:17

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.