A列に会社コード
B列に商品コード
が入っているExcelがあります。
会社コードと商品コードをあわせて複合キーとして
重複しているデータを抽出したいのですが
やり方がわかりません。
たとえば、
会社コード 商品コード
01 001
02 001
01 002
01 001
0 1001
01 001
という値が入っているときに、
1行目と重複している行として4行目と6行目を検索したいのです。
A列とB列の文字列を結合させてFindを使用しようと思ったのですが
そうすると、5行目も検索対象としてヒットしてしまいます。
(5行目は重複してるとはいいませんよね・・・)
VBAでの実現を考えています(初級者です)。
どなたか教えてください。
よろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
複合キーを作るときは第1キーの長さを見繕う(会社コード2桁)。
また第2キーの長さを見繕う(商品コード4桁)。そして両方ともTEXT関数やFormat関数でそれぞれを定桁にして、その上で&演算子で結合して修正キーにする。
これは鉄則です。
例
A列 B列 C列
01001010001
02001020001
01002010002
01001010001
01001001001
01001010001
C1の式は、
=TEXT(A1,"00")&TEXT(B1,"0000")
ーー
後はバッチ処理ですが、複合キーでソートし、直前レコードを同じか聞いていく、ソート法をお勧めします。
初心者にはFind関数は難しい。しかしFindメソッドも、まあ例題がWEBに沢山あるので、まねをすれば良いのですが。
No.2
- 回答日時:
#01です。
例えばこんなマクロでしょうか。Findメソッドも理解されていらっしゃるようですので、読めば分かると思います。
Sub Macro6()
Const col As String = "A"
Dim res
Dim act As Worksheet
Dim idx, lastR As Long
Dim fAdr As String
Application.ScreenUpdating = False
Set act = ActiveSheet
lastR = act.Cells(65536, col).End(xlUp).Row
For idx = 2 To lastR - 1
With act.Range(Cells(idx + 1, col), Cells(lastR, col))
Set res = .Find(What:=act.Cells(idx, col).Value, LookAt:=xlWhole)
If Not res Is Nothing Then
fAdr = res.Address
Do
If res.Offset(0, 1).Value = act.Cells(idx, col).Offset(0, 1) Then
res.Resize(1, 2).Font.ColorIndex = 3
End If
Set res = .FindNext(res)
Loop Until res.Address = fAdr
End If
End With
Next idx
Application.ScreenUpdating = True
End Sub
No.1
- 回答日時:
質問に書かれているだけのことでよければ、A2セルに条件付き書式で以下の数式を入力後「書式」ボタンで背景色を指定します。
「数式が」 「=AND($A$2=$A2,$B$2=$B2)」
後は他のセルに「編集」→「形式を選択して貼り付け」→「書式」で貼り付ければ、1行目と合致する行の背景色を変えることができます。
VBAを使うまでもありません(2003で確認しています)
もしVBAでやりたいとしても、この質問内容では残念ながら回答のしようがないですね。検索して見つかった時に、何をどうすればよいか明示されていないからです。
もしCtrl+Fの検索と同じような動作をさせるなら、当然「次へ」などのボタンを用意しなければなりませんが、UserFormで作るのですか?
それとも、別のシートに結果を書き込めばよいのですか?
VBAで実現するならそこまで考えてから質問するべきと思います。
(そこまで考えたら作って差し上げるという意味ではありませんが…)
この回答への補足
回答ありがとうございます。
説明が不足していて申し訳ありません。
やりたいことは
(1)ボタンを押す
(2)データの入力されている2行目のセルから、最終行まで検索
(3)2行目のA列・B列と合致している行のA列・B列の文字を赤くする
(4)最終行まで検索したら、3行目のセルから(2)・(3)の動作を繰り返す
(その後、4行目、5行目・・・として、最終行の1行前まで検索します)
ということです。
1つのセルでの重複チェックであれば実現できたのですが
2つ以上のセルでの実現方法がわかりませんでした。
1つのセルでのチェックの一部を抜粋すると
Do While ROW < lRow 'lRow:データのある最終行(事前に取得)
'重複チェック対象の値を取得
Inputdata = Cells(ROW, COL)
'自分の行より下の行をチェック対象範囲とする
With Range(Cells(ROW + 1, COL), Cells(lRow, COL))
Set objRange = .Find(what:=Inputdata, LookAt:=xlWhole, MatchCase:=True)
If Not objRange Is Nothing Then
'最初の検索結果のアドレスを格納
Addr = objRange.Address
Do
'対象文字を赤字にする(ロジック省略)
Loop While objRange.Address <> Addr And Not objRange Is Nothing
End If
ROW = ROW + 1
End With
Loop
結果として、何らかの重複があるデータが、赤い文字で表示されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 重複データの抽出について 2 2023/07/21 14:52
- Visual Basic(VBA) 3つの条件を指定してVBAで行を削除したい 条件1:分類1が重複 条件2:分類2が重複 条件3:個数 6 2022/06/24 11:07
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Visual Basic(VBA) vbaマクロについて 次のようなマクロを組みたいです。 自分は初心者なので全くわかりません。 詳しく 8 2023/05/18 18:38
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) 【VBA】複数行あるカンマ区切りのデータを全て縦に一列に並べたい 5 2022/04/13 17:03
- Visual Basic(VBA) VBA 重複チェック後に値をワークシートに転記する方法を教えてください。 1 2023/03/19 12:43
- Visual Basic(VBA) チームごとにどの商品を何個希望しているか数量を算出したいです。 A列(A2~A265)に各チーム名が 3 2023/07/18 18:46
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
エクセルマクロ:複数列 重複があった場合、メッセージと印入れる方法
Excel(エクセル)
-
エクセルVBAで複数列の重複チェックをするには
Excel(エクセル)
-
離れた2列を比べて重複しないデータを隣の列に表示させる方法 Excel
Visual Basic(VBA)
-
-
4
VBAを使用した、複数条件での重複チェック
Excel(エクセル)
-
5
別ファイルから重複するデータを探したい【エクセル】
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのデーターが2か月前の...
-
エクセルVBA、別ブックへ転記す...
-
【マクロ】顧客番号にて一致さ...
-
エクセル共有したが、アクセス...
-
エクセル②
-
(マクロ)データをAブックからB...
-
Excelでセルの値が同じか...
-
エクセルを使っていて2024/5/15...
-
指定文字の間に
-
Microsoft 365の Excel を使用...
-
エクセルの計算
-
エクセルでの作業計算方法について
-
Excelで全角を半角にしたいので...
-
エクセル関数に詳しい方教えて...
-
Googleスプレッドシートでファ...
-
エクセル 文字を増やしたい。
-
はがきについて。
-
エクセルの暗号化なしのバーの...
-
【マクロ】必要な項目(列)の...
-
Excel
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報