• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:重複抽出マクロ)

重複抽出マクロとは?データの整理を簡単にする方法

このQ&Aのポイント
  • 重複抽出マクロは、重複しているデータを抽出して整理するためのマクロです。
  • 特定の列に重複がある場合、重複したデータを見やすく表示します。
  • これにより、データの整理や分析作業を効率的に行うことができます。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

Sub 重複抽出2()  '行1に空行を追加する  Rows(1).Insert    'セルA1~E1に値1~5を代入する  Range("A1:E1").Value = [{1,2,3,4,5}]    '列DにセルA2と同じ値があれば TRUE、無ければ FALSE  Range("IV2").Formula = "=COUNTIF(D:D,A2)>0"    '列A~Cにフィルタをかける  '---- 以下は引数の説明 ----   'フィルタをかけた結果を他の場所に保存する   'フィルタ条件 (詳細不明)   '保存場所の指定  Columns("A:C").AdvancedFilter _   Action:=xlFilterCopy, _   CriteriaRange:=Range("IV1:IV2"), _   CopyToRange:=Range("F1:H1")    'セルIV2の式を消去する  Range("IV2").Clear    '行1を削除する  Rows(1).Delete End Sub

esd827
質問者

お礼

希望通りできました。ありがとう御座いました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

「セル Ax = セル Dy」 ならば セル Fz = セル Ax セル Gz = セル Bx セル Hz = セル Cx (ただし、x, y, z は任意の整数) という代入を実行するということですね。 NG とは?何が問題になっているか記述すべきでしょうね。 今回は「エラー 400」のようですね。 これは http://oshiete1.goo.ne.jp/kotaeru.php3?q=2211259 を参照しましょう。 おそらく列 D ~ E を列 F ~ H にコピーしようとしているのが原因ですね。 2列を3列にコピーすることはできませんから。 コードのコメントが無いと書きましたが、これは Rows(1).Insert '行1に空の行を挿入する。 Range("A1:e1").Value = [{1,2,3,4,5}] 'セル A1 ~ E1 に 1 ~ 5 を代入する ... のようにコードにコメント (説明文) を記述するということです。 C 列のコピーが無いバージョンはうまく動作するということなので、 それを掲載すれば手早く回答できると思います。

esd827
質問者

補足

回答 ありがとう御座います。 C列が無い場合のマクロを示します。 Sub 重複抽出4() Rows(1).Insert Range("A1:d1").Value = [{1,2,3,4}] Range("IV2").Formula = "=COUNTIF(A:A,c2)>0" Columns("C:D").AdvancedFilter _ Action:=xlFilterCopy, _ CriteriaRange:=Range("IV1:IV2"), _ CopyToRange:=Range("e1:f1") Range("IV2").Clear Rows(1).Delete End Sub

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

補足要求です。 まず「やりたい事」なのですが、 「セル Ax = セル Dy」 かつ 「セル Bx = セル Ey」ならば セル Fz = セル Ax セル Gz = セル Bx セル Hz = セル Cx (ただし、x, y, z は任意の整数) という代入を実行するということで合っているでしょうか? コード (マクロ) の意図を読み取れませんでした。 どのような処理手順になっているかコメントを付けてくれないと理解できません。 ちなみに、私が上記のような処理を行うなら esd827 さんとは異なるコードを書きます。 (私が VBA のことを良く知らないためです。 一般的なプログラミング (例えば C 言語) でのアルゴリズムを VBA で書くことになります。) >列が揃ってなくて、見にくいですが。 これはカンマ区切り (CSV 形式) で掲載すると良いと思います。 カンマ区切りであれば、見た目で列が揃っていなくても Excel にインポートすれば 列が揃った形で表示されます。

esd827
質問者

補足

問い合わせ ありがとう御座います。補足説明します。 1.key pointは、銘柄コードです。 銘柄コードが同じかどうかで、判別すればよいのです。 銘柄名は、3864 三菱製紙 or 三菱紙 となったりしますので。 尚、私のマクロは、c列が無い場合のマクロをベースにしています。実績有り。 2.今後、カンマ区切り (CSV 形式) で掲載します。 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • excel2003 重複削除マクロ 再質問

    QNo.3630625 excel2003 重複削除マクロ 回答マクロを実行した結果、うまくいかないケースがあり、再質問させて頂きました。 winxp he sp2, office2003 AB重複銘柄を削除した結果を、CDに書くマクロを教えてください。 この例では、日経300投信 チャイナボーチーが重複しています。 AB(銘柄コードと銘柄名)は一体です。データは沢山あります。1700個。 列がずれて見にくいです。 A    B       C   D 1313 KODEX200 1313 KODEX200 1319 日経300投信  1319 日経300投信 1319 日経300投信  1380 秋川牧園 1380 秋川牧園     1381 アクシーズ 1381 アクシーズ    1412 チャイナボーチー 1412 チャイナボーチー 1724 シンクレイヤ 1412 チャイナボーチー 1735 伊田テクノス 1412 チャイナボーチー 1753 土屋ツーバイホーム 1724 シンクレイヤ   1783 A.Cホール 1735 伊田テクノス 1753 土屋ツーバイ 1783 A.Cホール 回答: 1行目は項目名と判断されてしまいますので提示の例ではうまく行きましたが、正しくありません。 では、マクロ作業上でダミーで先頭に1行追加し、項目を振り、終了後にダミー行を削除するように変えてみました。 逐条で解説もつけておきます。 Sub test03() Dim x As Long 'xは長整数と宣言 With ActiveSheet 'アクティブなシートで .Rows("1").Insert Shift:=xlDown 'ダミー行挿入 .Range("A1") = "Code" 'ダミー項目1 .Range("B1") = "Name" 'ダミー項目2 x = .Cells(.Rows.Count, 1).End(xlUp).Row '最終行取得 .Range("A1:B" & x).Select '範囲選択 Selection.AdvancedFilter Action:=xlFilterInPlace, Unique:=True '重複を表示しない Selection.Copy .Range("C1") 'コピーしてC1以降に貼り付け .ShowAllData 'すべてを表示 --------------------------------------ここでデバッグエラーが発生します。 .Rows("1").Delete Shift:=xlUp 'ダミー行削除 End With End Sub エラーが発生するケースまでは、特定していません。 よろしくお願いします。

  • excel2003 重複削除マクロ

    winxp he sp2, office2003 AB重複銘柄を削除し、CDに書くマクロを教えてください。 この例では、日経300投信 チャイナボーチーが重複しています。 AB(銘柄コードと銘柄名)は一体です。データは沢山あります。 列がずれて見にくいです。 A    B       C   D 1313 KODEX200 1313 KODEX200 1319 日経300投信  1319 日経300投信 1319 日経300投信  1380 秋川牧園 1380 秋川牧園     1381 アクシーズ 1381 アクシーズ    1412 チャイナボーチー 1412 チャイナボーチー 1724 シンクレイヤ 1412 チャイナボーチー 1735 伊田テクノス 1412 チャイナボーチー 1753 土屋ツーバイホーム 1724 シンクレイヤ   1783 A.Cホール 1735 伊田テクノス 1753 土屋ツーバイ 1783 A.Cホール よろしくお願いします。

  • 重複しないデータのみを抽出

    初めまして。 初心者なりに頑張ってみたのですがうまくいかず、 エクセルかアクセスにて、下記内容を処理出来ないものか 質問させて頂きました。何卒宜しく御願い致します。 2つのデータを併せて、重複しないデータのみを抽出したいのです e.g. データ1=(a,b,c,d) データ2=(b,b,c,d,e) 求めている結果=(a,b,e) となります。 現状、手作業にてチェックしているので、 非常に時間がかかってしまい困っております。 何卒、宜しくお願いします。

  • 重複するデータの抽出について(エクセル)

    エクセル2003にて重複するデータの取り出しをしたいのですが、 わからないので教えてください。 例えば   A列   B列   C列    D列    E列・・・ 1  色  1回目  2回目  3回目   4回目 2  赤   あ    a      A       0 3  白   い    b      B       1 4  黄   う    c      C       2 5  黄   え    d      D       3 6  黒   お    e      E       4 7  赤   か    f      F       5 : このデータの中から、別のシートのA1に 赤と入力したら、B1にD列のA・Fを抽出 黄と入力したら、B1にD列のC・Dを抽出をしたいです。 VLOOKUP関数を使用してみたのですが、 赤と入力すると、D列のA(1番上のデータ)のみしか抽出出来ず、Fが抽出されません。 重複するデータがあるのはA列のみで、D列には重複するデータはありません。 わかりにくい文章ですみませんが、よろしくお願いします。

  • 【エクセル】重複データ抽出時にうまくいかない

    エクセル2003で、[データ]→[フィルタ]→[フィルタオプションの設定]で下記のように 設定して重複データを省きました、 ・「指定した範囲」にチェック ・「リスト範囲」に$A$1:$A$13を入力。 ・「抽出範囲」に$B$1を入力 ・「重複するレコードは無視する」にチェック の条件で実行すると。 [元データ]  A列 1 a 2 a 3 b 4 b 5 c 6 c 7 c 8 d 9 d 10 d 11 e 12 e 13 e が [フィルタ実行後]  A列  B列 1 a  a 2 a  a 3 b  b 4 b  c 5 c  d 6 c  e 7 c 8 d 9 d 10 d 11 e 12 e 13 e の様にB列でaが2つ出てしまいます。 なにが原因でしょうか?

  • 重複抽出して片方を削除

    A列  B列  C列  D列  E列 ・・・ 1234  あい  うえ  おか   0 ・・・ 5678  かき  くけ  こさ  さし ・・・ 9123  すせ  そた  たち  つて ・・・ 4567  とな  にぬ  ぬね  のた ・・・ 1234  あい  うえ  おか  はま ・・・ 8912  はひ  ふへ  ほま  やら ・・・ 4567  とな  にぬ  ぬね   0 ・・・          ↓↓↓ 重複を取り出す A列  B列  C列  D列  E列 ・・・・・・・・・・・ 1234  あい  うえ  おか   0  ・・・・・・・・・・・ 1234  あい  うえ  おか  はま  ・・・・・・・・・・・ 4567  とな  にぬ  ぬね  のた  ・・・・・・・・・・・ 4567  とな  にぬ  ぬね   0  ・・・・・・・・・・・ 上記のように重複を取り出しE列に『0』と表記されている方を削除したいのですが、やり方がわかりません。 重複の抽出法と、削除方を教えてください。 列項目はかなり有り、行も5000以上あるデータです。

  • 重複行を完全削除するエクセルのマクロ

    Sub sakujyo() Dim i, ii As Long For i = 1 To Range("a65336").End(xlUp).Row For ii = Range("a65336").End(xlUp).Row To i + 1 Step -1 If Cells(i, 2).Value = Cells(ii, 2).Value _ And Cells(i, 4).Value = Cells(ii, 4).Value _ And Cells(i, 5).Value = Cells(ii, 5).Value Then Dim iii As Byte iii = 1 Rows(ii).Delete Shift:=xlUp End If Next ii If iii = 1 Then Rows(i).Delete Shift:=xlUp iii = 0 Next i End Sub データーが下の表のように入っております。     A    B    C    E    F 1  1/26  a1234  fdsa  5000  C1 2  1/27  a4567  sdfa  4000  T2 3  1/28  a1234  dfsa  5000  C1 4  1/30  b4567  asdf  6600  A2 5  2/10  b4567  fsda  6600  A2 6  2/10  a1234  afds  5000  C1 B列、E列、F列が完全一致(重複1行目と3行目と6行目・4行目と5行目)で削除し結果的に2行目だけ残る方法がしたいのですが、このマクロですと少ないデータですとうまく動くのですが、『大量のデータを一気に削除出来ない』、『同じ重複が3つ以上のデータが多数ある場合データが削除されずに残ってしまう』エラーが出てしまいます。どうかお教えください。

  • エクセル 重複したセルの隣の値を抽出したい。

    E1にD1が重複する名前をA列から検索し、隣のセルの「日付だけ」を抽出するにはどうすればよいのでしょうか? E1には「2013/4/1」と表示させたいです。 よろしくお願いします。

  • マクロで困ってます!

    マクロでセル検索かけたらそのセルに設定していたハイパーリンクが外れてしまいます。 どうすればいいでしょうか・・?お力を貸してください! バージョンは2007です! コードは下記になります! 同一ブック内の「データ」というシートにあるものを「検索更新」というシートで検索をかけるというものです。 宜しくお願いします!! Sub 検索2() myLAST = Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row + 1 If myLAST < 5 Then myLAST = 5 Range("A5:F" & myLAST).ClearContents Set myC = Sheets(1).Columns(3) _ .Find(What:=Range("E2").Value, _ LookIn:=xlValues, LookAt:=xlPart) ' If myC Is Nothing Then Exit Sub myCa = myC.Address Do myLAST = Range("B" & ActiveSheet.Rows.Count).End(xlUp).Row + 1 Range("A" & myLAST) = myC.Row Range("B" & myLAST) = myC.Offset(0, -1) Range("C" & myLAST) = myC.Offset(0, 0) Range("D" & myLAST) = myC.Offset(0, 1) Range("E" & myLAST) = myC.Offset(0, 2) Range("F" & myLAST) = myC.Offset(0, 3) Set myC = Sheets(1).Columns(3).FindNext(myC) If myC Is Nothing _ Or myCa = myC.Address Then Exit Do Loop Set myC = Nothing End Sub Sub 更新() myLAST = Range("A" & ActiveSheet.Rows.Count).End(xlUp).Row If myLAST < 5 Then myLAST = 5 For Each myC In Range("A5:A" & myLAST) If myC.Value = "" Then Exit Sub With Sheets(1) .Range("B" & myC.Value) = myC.Offset(0, 1) .Range("C" & myC.Value) = myC.Offset(0, 2) .Range("D" & myC.Value) = myC.Offset(0, 3) .Range("E" & myC.Value) = myC.Offset(0, 4) .Range("F" & myC.Value) = myC.Offset(0, 5) End With Range("A" & myC.Row & ":F" & myC.Row).ClearContents Next MsgBox "更新しました" End Sub

  • 重複するデータの削除と抽出方法

    はじめまして。 区分   ランク 001  A 002  B 002  B 003  C 004  D 005  E 005  F このようなデータを以下の条件で削除し抽出する方法を教えていただけないでしょうか。 ・区分が重複しているデータを削除したい。 ・しかし区分が重複していてもランクが異なる場合は削除しない。    ↓ 001  A 002  B 003  C 004  D 005  E 005  F エクセルとアクセス両方での方法を教えていただければ有難いのですが・・・(エクセル、アクセスとも初心者です) わかりにくい質問ですがよろしくお願い致します。

専門家に質問してみよう