[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『不一致データを抽出したい』(たろう)
質問内容 A B 13 5 5 9 8 25 25 9
このように、AとBに数字がならんでて、不一致のものだけCに空白なしで表示させたいのですが、どうしたらいいでしょうか?
どなたか教えてください。
「フィルタオプションの設定」を使っても宜しければ 以前このような質問がありました。 [[20050224120843]]『リスト1とリスト2を比較して無いものを抽出』(ヨロ)
ちなみにこの過去ログは、全文検索で「不一致 抽出」として検索し 3番目に表示された過去ログの中で「参考」として紹介されていたものです。
(HANA)
以前弥太郎さんから お教えいただいたマクロです。
(Ty)
Sub 弥太郎さん差分()
Dim Non_data(), tbl_1
Dim tbl As Range
Dim i As Long, n As Long
tbl_1 = Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row).Value
Set tbl = Cells(1, 2).Resize(Cells(Rows.Count, 2).End(xlUp).Row)
For i = 1 To UBound(tbl_1, 1)
If WorksheetFunction.CountIf(tbl, tbl_1(i, 1)) = 0 Then 'A列ひくB列
'If WorksheetFunction.CountIf(tbl, tbl_1(i, 1)) = 1 Then 'A列にあってB列にある
ReDim Preserve Non_data(n)
Non_data(n) = tbl_1(i, 1)
n = n + 1
End If
Next i
ActiveCell.Offset(0).Resize(UBound(Non_data) + 1) = Application.Transpose(Non_data)
End Sub
弥太郎さんのマクロは確か 差分 と書いたセルをアクティブにして実行するように
なっとったと思うんですが・・・
でないと、とんでもない所にデータを拾い出してしまいまっせ。(笑
せやから
If ActiveCell <> "差分" Then Exit Sub の挿入と
ActiveCell.Offset(1).Resize(UBound(Non_data) + 1) = Application.Transpose(Non_data)
の書き換えが必要ですワ。
それとあのマクロ、データ量が多いと時間かかりまんなぁ。(10000行で9秒ほど)
あんなマクロは廃棄処分にして、ニューバージョンに差し替えたらどうでっしゃろ? これやと1秒以内できっちし作業をこなしてくれます、ハイ。 同じく差分と入力したセルをアクティブにして実行します。 (弥太郎)
'--------------------------------------
Sub 差分速度重視()
Dim dic As Object, tbl, data
Dim i As Long,j As Long,n As Long
Set dic = CreateObject("scripting.dictionary")
If ActiveCell <> "差分" Then Exit Sub
tbl = Cells(1, 1).Resize(Cells(Rows.Count, 1).End(xlUp).Row, 2).Value
For i = 1 To UBound(tbl, 1)
If Not IsEmpty(tbl(i, 2)) Then
dic(tbl(i, 2)) = Empty
End If
Next i
ReDim data(1 To UBound(tbl, 1), 1 To 1)
For j = 1 To UBound(tbl, 1)
If Not dic.exists(tbl(j, 1)) Then
n = n + 1
data(n, 1) = tbl(j, 1)
End If
Next j
If n > 0 Then
ActiveCell.Offset(1).Resize(n) = data
End If
Set dic = Nothing
End Sub
エラー処理を追加 9:13
弥太郎さん いつもありがとうございます。 中日が負けて 明日は暇ですので dictionaryを少し勉強いたします。 (Ty)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.