Excel VBA 質問スレッド No.153 (解決済)

2つのid一覧

投稿者 : ssk     投稿日時 : 2021/01/04(Mon) 01:23:40     OS : Windows 10     EXCEL : Excel 2016
A列にidの一部、B列にidの全部を貼り付けるとC列にA列にはないが、B列にはあるidの一覧を出力するVBAのプログラムを考えています。
現在はcountifを使って範囲指定し、含まれている、いないで0と1に分けてフィルタを掛けていますが、A列とB列に貼り付けてボタンを押すとC列に出力されるというのが希望です。

[返信 1] Re : 2つのid一覧
投稿者 : EUNO     投稿日時 : 2021/01/04(Mon) 03:21:02
VBAの場合もWorksheetfunctionで、Countif関数を使うのが簡単だと思います。

Sub test()
Dim i As Long
For i = 1 To 10 'ここは適当に入れてます
If WorksheetFunction.CountIf(Range("A:A"), Cells(i, 2).Value) = 0 Then
Cells(i, 3) = Cells(i, 2).Value
End If
Next i
End Sub


これだと空白セルができるので、それを解決するにはいくつか案があります。
・あとからC列のみソートor空白セルを削除するコードを追加
・Cells(i,3)のところを工夫する
・配列を使う
などでしょう。下に行くほど難しくなりますので自分で考えてみてください。

[返信 2] Re : 2つのid一覧
投稿者 : ssk     投稿日時 : 2021/01/09(Sat) 01:33:23
無事思っていた通りの結果が出ました。
空白を詰めるプログラムも検索したらかけました。
ありがとうございました。

[返信 3] Re : 2つのid一覧
投稿者 : EUNO     投稿日時 : 2021/01/09(Sat) 12:49:01
返信ありがとうございます。できたようでよかったです。
空白を作らないようにするには、cells(i,3)の部分を一工夫するのがスマートだと思います。
参考までに。

Sub test()

Dim i As Long
Dim n As Long

Columns(3).ClearContents 'C列のデータクリア
n = 1
For i = 1 To Cells(Rows.Count, 2).End(xlUp).Row '1行目から、B列の最終行まで
If WorksheetFunction.CountIf(Range("A:A"), Cells(i, 2).Value) = 0 Then
Cells(n, 3) = Cells(i, 2).Value
n = n + 1
End If
Next i
End Sub

当掲示板について
返信入力フォーム
お 名 前  :
内  容   :
ステータス  : この質問を解決済みにする

認証コード  :
        キャプチャ画像


( 処理日時 : 2021-01-27 11:56:47 )

Page
Top