OCN光で最大124,800円おトク!

数値の表を作成しておりますが、
重複数値で困っております。マクロで教えてください。

A列11~20まで1.2.2.4.5.6.6.8.9.10とあるデータに
2と6が重複しています
重複数値2.6をB列2行目以降に、C列2行目以降にはそれ以外の1.4.5.8.9.10
を抽出したいのですが、マクロで教えてください。
(offsetを使ってできますか?)

また、重複数値を抽出する自作関数ってできるでしょうか?
よろしくお願いいたします。

「エクセルマクロで重複数値と以外の数値を抽」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (2件)

こんばんは!


既存のワークシート関数でやってみました。

↓の画像のように作業用の列を設けています。
作業列E2セルに
=IF(AND(COUNTIF(A$11:A$20,A11)>1,COUNTIF(A$11:A11,A11)=1),ROW(A1),"")
という数式を入れ、元データの行数分(10行)下へコピー!

そしてB2セルに
=IFERROR(INDEX(A$11:A$20,SMALL(E$2:E$11,ROW(A1))),"")
C2セルに
=IFERROR(INDEX(A$11:A$20,SMALL(IF(COUNTIF(A$11:A$20,A$11:A$20)=1,ROW(A$1:A$10)),ROW(A1))),"")
※ C2セルは配列数式になりますので、Ctrl+Shift+Enterで確定!
この画面からコピー&ペーストする場合、
上記数式をドラッグ&コピー → C2セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)
Ctrl+Shiftキーを押しながらEnterキーで確定!
数式の前後に{ }マークが入り配列数式になります。

最後にB2・C2セルを選択 → C2セルのフィルハンドルで下へコピー!
これで画像のような感じになります。

※ 作業列の「2」と「6」はデータそのものではなく、
INDEX関数で範囲指定した行番号です。

尚、質問のタイトルが「マクロで!」というコトですので、ついでにVBAでの一例です。
シートモジュールにしてみてください。(当然のことながら作業列は不要です)

Sub Sample1()
Dim i As Long, c As Range
Range("B2:C11").ClearContents
For i = 11 To 20 '←A列11行目~20行目まで
If WorksheetFunction.CountIf(Range("A11:A20"), Cells(i, "A")) > 1 Then
Set c = Range("B:B").Find(what:=Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If c Is Nothing Then
Cells(Rows.Count, "B").End(xlUp).Offset(1) = Cells(i, "A")
End If
Else
Cells(Rows.Count, "C").End(xlUp).Offset(1) = Cells(i, "A")
End If
Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m
「エクセルマクロで重複数値と以外の数値を抽」の回答画像2
    • good
    • 0
この回答へのお礼

tom04様
ご丁寧にご説明いただきましてありがとうございました。
感激。目からウロコでした。助かりました。
丁寧な解説で、だんだん解読できるようになりました。
まだまだ学習中ですので、またご質問させていただきますが、
よろしくお願いします。

お礼日時:2014/12/16 21:23

Microsoft Queryを追加インストールしてSQL投げる。


「外部データの取込」とあるが、EXCELへも接続できる

SelectでCOUNTとって、HAVINGで識別
重複アリは>1だし、重複ナシは=1を捨えばOK
これをVBAで記述

参考URL:http://office.microsoft.com/ja-jp/excel-help/HA0 …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。このような機能があることを初めて知りました勉強になります。
と同時にExcelの万能さに感動しております。まだまだ学習不足なので、またご質問させていただきますが、
よろしくお願いいたします。

お礼日時:2014/12/07 18:37

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで重複しているデータの抽出のしかたを教えてください。

エクセルで重複しているデータを抽出したいのですが・・。なにぶん初心者なもので簡単な方法があればよいのですが・・。
A列に日付 B列に企業名このデータが300件ほどあります。

 Å列      B列
1月 1日    AAAA社
1月 4日   BBBB社
1月 8日   CCCC社
2月 1日   BBBB社
2月20日    DDDD社
3月 2日   AAAA社

と、あるとしてB列の企業名が重複しているものを抽出したいのですが・・・。この場合 AAAA社とBBBB社ですが。
これを簡単に抽出する方法はないでしょうか?
教えてください お願いいたします。

Aベストアンサー

企業名がセルB2からセルB300まで入力されていると仮定します。
セルC2に IF(COUNTIF($B$2:B2,B2)>1,"*","") を入力し、セルC300までコピーして下さい。すると重複したデータの二番目以降に "*" のマークが付きます。
(注) 数式を下のセルまでコピーするため、COUNTIF($B$2 は絶対参照にして下さい。

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい


人気Q&Aランキング