![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?b2912fe)
No.2ベストアンサー
- 回答日時:
こんな感じはいかがでしょうか。
sheetはActiveSheetにしています。
抽出先は、B列最終データ行の2行下からになっています。
Sub 不一致抽出()
Dim Dic As Object
Dim dkey As Variant
Dim dtRow As Integer
Dim opRow As Integer
Set Dic = CreateObject("Scripting.Dictionary")
dtRow = 2 'A列データ開始行
'A列をDictionaryオブジェクトに格納
Do Until ActiveSheet.Cells(dtRow, 1).Value = ""
dkey = ActiveSheet.Cells(dtRow, 1).Value
If Not Dic.exists(dkey) Then
Dic.Add dkey, Null
End If
dtRow = dtRow + 1
Loop
dtRow = 2 'B列データ開始行
opRow = Cells(Rows.Count, 2).End(xlUp).Row + 2 'B列の最終行+2行
'B列がDicitonaryオブジェクトにない場合はB列の下に書き出します
Do Until ActiveSheet.Cells(dtRow, 2).Value = ""
dkey = ActiveSheet.Cells(dtRow, 2).Value
If Not Dic.exists(dkey) Then
ActiveSheet.Cells(opRow, 2).Value = dkey
opRow = opRow + 1
End If
dtRow = dtRow + 1
Loop
End Sub
No.5
- 回答日時:
No3です
少しわかりにくかったかも知れないので、補足しておきます。
No3で例示したコードの前半では対象範囲(=A,B列)の各名前をkeyにしたDictionaryを作成しています。
値がとり得る範囲は、1、2、3のいずれかで、それぞれ以下のような意味になります。
1:A列だけに存在する名前
2:B列だけに存在する名前
3:A列、B列に存在する名前
No3の例示では、値が3以外(=1と2)を抽出するようにしてありますが、これを「1を抽出」や「2を抽出」とすることによって「A列のみのチェック」、「B列のみのチェック」の処理に変えることができるという次第です。
ついでながら…
>このコード等は fujillin 様がプログラミングされたのでしょうか?
ご質問の内容がどこかにころがっているものとは思えません。作成しています。
>ものすごい高度ですね。
私は、見よう見まねで覚えただけなので、コーディングはほんの趣味程度です。
ですので、決して「高度なもの」は作成できませんので、誤解のなきように。
No.4
- 回答日時:
No.1です。
逆があり得ないなら、
・まずB列の値を.NET FrameworkのSystem.Collections.ArrayListに全て放り込みます。
・次にA列を調べ同じ値があったらArrayListから削除していきます。
・最後に残った値の数でメッセージボックスの表示を変えます。
Sub megu()
Dim al As Object
Dim ra As Range, rb As Range
Dim st As String
Set al = CreateObject("System.Collections.ArrayList")
For Each rb In Range("B2", Cells(Rows.Count, "B").End(xlUp))
If al.IndexOf_3(rb.Value) < 0 Then al.Add (rb.Value)
Next
For Each ra In Range("A2", Cells(Rows.Count, "A").End(xlUp))
If al.IndexOf_3(ra.Value) >= 0 Then al.Remove (ra.Value)
Next
st = ""
If al.Count = 1 Then
st = al(0)
ElseIf al.Count > 1 Then
st = Join(al.ToArray(), vbCrLf)
Else
st = "共に同じです"
End If
MsgBox st
Set al = Nothing
End Sub
ただもしかすると、
・Set al = CreateObject("System.Collections.ArrayList")
でエラー表示とかが出るなら、.NET Frameworkの古いバージョンがPCにないと思いますのでこの回答は無視して下さい。
No.3
- 回答日時:
こんにちは
>A欄、B欄のそれぞれのリストを照合して重複していない
>文字を別セルに抽出したいのです。
文章通りの意味にとると、No1様がすでにご指摘のように、B列だけでなくA列に対してもチェックが必要になると思われます。
>A欄の名簿を基本としてB欄で重複していない文字を~~
だと、B列だけをチェックすれば良いものと読み取れます。
下記はとりあえず両方の列をチェックする一例ですが、不明点は以下の様に仮定しています。
・A列、B列のそれぞれ最下行(可変)までのデータを対象とする。
・A列内での重複、B列内での重複は重複とみなさない。
(他の列と重複しているか否かで判断する)
※ 最下行までを対象としているため、結果をA、B列に表示するのは好ましいとは思えないので、ひとまずメッセージボックスに表示するようにしてあります。(複数存在する場合は改行で表示)
どこかのセルに表示したい場合は、そのまま結果をセルに入れれば良いです。
※ B列だけチェックすれば良いのであれば、Dicの値が2のものを抽出すればよいです。
(A列だけをチェックしたい場合は、同様に値が1のものだけを抽出)
Sub Sample()
Dim Dic As Object, k
Dim rw As Long, col As Integer
Dim s As String, res As String
Set Dic = CreateObject("Scripting.Dictionary")
For col = 1 To 2
For rw = 2 To Cells(Rows.Count, col).End(xlUp).Row
s = Cells(rw, col).Value
If s <> "" Then
If Dic.Exists(s) Then Dic.Item(s) = Dic.Item(s) Or col Else Dic.Add s, col
End If
Next rw
Next col
res = ""
For Each k In Dic.Keys
If Dic.Item(k) <> 3 Then res = res & vbNewLine & k
Next
res = Mid(res, 3)
MsgBox res
End Sub
回答有難うございました。
>ひとまずメッセージボックスに表示するようにしてあります。(複数存在する場合は改行で表示)
これは非常に良いと思いました。
このコード等は fujillin 様がプログラミングされたのでしょうか?ものすごい高度ですね。
有難うございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
【お題】逆襲の桃太郎
【大喜利】桃太郎が1回鬼退治に失敗したところから始まる新作昔話「リベンジオブ桃太郎」にはこんなシーンがある
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
EXCEL VBA 一致しないデータの抽出及びデータ更新
Excel(エクセル)
-
更新前と更新後の差分をVBAを使って抜き出したい
Excel(エクセル)
-
ExcelVBAでデータ不一致のものの抽出
Excel(エクセル)
-
-
4
Excelで[表1]にあって、[表2]にないものを抽出する関数
その他(Microsoft Office)
-
5
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
6
エクセルVBAで 2種のリストを比べて重複していないデータを最下行に追加するには
Excel(エクセル)
-
7
A列にあってB列にはない単語をC列に残したいです。
Excel(エクセル)
-
8
EXCELで2つのシートから一致しない情報だけ抽出
Excel(エクセル)
-
9
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
10
離れた2列を比べて重複しないデータを隣の列に表示させる方法 Excel
Visual Basic(VBA)
-
11
VBA 列全体を別シートの列と比較し、同じ値がある行の、右端に値をコピーする方法について
Excel(エクセル)
-
12
VBA A列にありB列にないものまた逆
Visual Basic(VBA)
-
13
VBAコード記述に際して、コード全体を自動的にインデント付ける方法
Access(アクセス)
-
14
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
15
【VBA】異なる行だけを抜き出す数式/マクロについて
Visual Basic(VBA)
-
16
VBA Cのセルが空白でなかったら、Aのセルに順番に数値を入力
Visual Basic(VBA)
-
17
Excelマクロ 差分抽出の方法が知りたいです。
Excel(エクセル)
-
18
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
19
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
20
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
Worksheets メソッドは失敗しま...
-
VBAのFind関数で結合セルを検索...
-
Excelで、あるセルの値に応じて...
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
【VBA】複数行あるカンマ区切り...
-
VBA 何かしら文字が入っていたら
-
Changeイベントでの複数セルの...
-
文字列の結合を空白行まで実行
-
C# datagridview 列幅の調整
-
vba 2つの条件が一致したら...
-
VBAで指定範囲内の空白セルを左...
-
エクセル 2つの表の並べ替え
-
VBAを使って検索したセルをコピ...
-
VBAで、特定の文字より後を削除...
-
空白セルをとばして転記
-
C# 列の挿入
-
セルに値が入っていた時の処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
B列の最終行までA列をオート...
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
Cellsのかっこの中はどっちが行...
-
vba 2つの条件が一致したら...
-
IIF関数の使い方
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
データグリッドビューの一番最...
-
文字列の結合を空白行まで実行
-
rowsとcolsの意味
-
VBAを使って検索したセルをコピ...
-
VBA 何かしら文字が入っていたら
-
Changeイベントでの複数セルの...
-
【Excel VBA】 B列に特定の文字...
-
【VBA】2つのシートの値を比較...
-
【Excel VBA】カンマと改行コー...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
エクセル 2つの表の並べ替え
おすすめ情報