• 締切済み

エクセルの関数またはVBAで、1つのデータだけ残したい

windows-xp エクセル2003を使っています。 教えて下さい。 下記のように、B列とC列に入っているデータを見て判断したい作業があります。 それは、B列C列ともに、同じ内容が表示されているものがあります。 それら同じデータが入っている、いくつかのデータのうち、1つだけを残してあとの行は削除する。ということをしたいのです。 同じデータは2つあるかもしれないし、3つあるかもしれません。 ちなみに、一番上の行は、この表の項目になっています。 というわけで、具体的に下記でいうと、5行目と6行目に同じデータが入っているわけですが、どちらか1つを残して、あとは削除する。 という作業をしたいのです。 B列         C列  000010   7400046335-HYKH5279 000010   7400046336-HYKB0522 000010   EG-00215 000020   EG-00215 000010   EG-00216 000010   EG-00216 000020   EG-00216 いかがでしょうか。 申し訳ありませんが、お知恵をお貸し下さい。 宜しくお願い致します。

みんなの回答

  • 999plus1
  • ベストアンサー率64% (20/31)
回答No.1

特に難しいことをしなくても [フィルタオプション]で可能です。 参考URLの例では[氏名]の一列のみの重複を 検出していますが、mipomipoさんの場合は、 2列の完全一致なので、表全体を[選択範囲]と して下さい。  仮に、質問にある、例の場合であれば、  [Sheet1!$B$2:$C$8]となります。 そして、[重複するレコードは無視する]を チェックする。 後は、参考URLの説明にあるとおりです。 *-*-*- 補足 -*-*-*-*-*-*-*-*-*-*-*-*  非表示を元に戻す時は、メニューから  [データ]→[フィルタ]→[全て表示]を実行。  抽出先を[指定範囲]とする場合、抽出先の  先頭セルのみ指定してやればOK。   抽出先に、他のデータがあり、上書きされ  てしまった場合、undo(元に戻す)がきかない  ので、注意が必要。  別シートへ抽出する場合は、参考URLの  ように、抽出先を[選択範囲内]として、  コピペするという、手順が必要。

参考URL:
http://www.x-media.co.jp/tyoufaq/faq35_2.shtml
mipomipo
質問者

お礼

お礼が遅くなり大変申し訳ありません。 大変参考になりました。 ありがとうございました!!

関連するQ&A

  • 【エクセル】データ抽出する関数の使い方

    データを抽出するのに、今までVlookupなどを使っていました。 今回2つの項目(下記の表だと月と色)を指定して、抽出したいです。 Sheet1(元データ)   A  B  C   1 月  色 値段 2 01  赤 4532 3 02  赤 1495  4 01  白 10012 5 03  赤 7568 6 02  白 78964 7 01  緑 78932 8 02  緑 7894 9 上記のような表から、下記のような形にデータを抽出したいです。 Sheet2   A  B   C    D    E  1 色 1月値段 2月値段 3月値段 2 赤 4532  1495 7568 3 白 10012 78964 4 緑 78932 7894 5 … 6 … Sheet2の色の項目内(A列)の順番は決まっています。 色に対応する、月ごとの値段の出し方がわかりません。 Sheet1のデータは2000行弱くらいの量です。 月は3月までです。説明不足名ところがありましたら 追記いたします。 ※重要なのが元データのシートで作業列などを追加することが出来ませ  ん(色と月を結合した列を追加などが出来ません)。Sheet2のセル内  に関数を記入するだけで今回のようなことは可能 でしょうか。 すみませんがご指導よろしくお願いいます。

  • エクセルVBAで重複データの削除

    A列、B列、C列・・・とデータが入っていて、B~D列の5行目から10行目が関連の有るデータのかたまりとします。 C~D列の全てのデータが重複している場合に、最初のほうのデータ(行番号が小さいほう)を残すものとして、重複データを削除したいのです。 削除するときは、 B~Dの範囲で削除する。A列等は削除しない。 削除したらデータは上に詰める。 データはソートしない。 ということをやりたいのですが、簡単に出来ますでしょうか? 良く覚えていないのですが、ネット上で色々探してみても、必ずソートしている気がしたので、ソートしない方法が知りたいのですが。

  • エクセル:条件データの選出

    エクセル (前提) 項目1から項目5の100行×5列の表 1行目:タイトル (1,1)が項目1、――、(1,5)が項目5    (2,1)から(100,5)がデータ (求めたいこと) 項目1データと項目2データの組合せを重複なく数え G列以降に存在するだけ G列            : H列       :I列    ----------------- 項目1データの1      : 項目1データの2:項目1データの3------------ 対応する項目21データの1 : 項目2データの2:項目2データの3------------: という形で出力したいする。(但し項目1は昇順にしたいが今回それは保留) (例) A列    B列 項目1  :項目2 C     に A     い B     ろ A     い B     は C     に D     い (例結果) G列 A:B:B:C:D(ここは必ずしもソートの必要なし) い:ろ:は:に:い どう解決すればということで、 1行目に項目1、2行目に項目2ということで G1=INDEX($A$2:$B$100,SMALL(IF(MATCH($A$2:$A$100&$B$2:$B$100,$A$2:$A$100&$B$2:$B$100,0)=ROW($A$1:$A$99),ROW($A$1:$A$99)),COLUMN(A1)),ROW(A1)) 配列数式です。Ctrl + Shift + Enter 2行目にフィル、エラーが出るまで横へフィル 昇順ではないので、結果をコピー、そのまま[形式を選択して貼り付け]-[値]、 あとは、列単位で並べ替え。 このやり方で一つの立派な解なのですが。 (質問) 項目1と項目2がA列,D列と離れている場合はどうするかということです。 もちろんワーク用にシートをコピー後B列~C列を削除して適用すれば求まるのはわかりますが、そうしないでもできる方法があれば教えてください。

  • エクセル関数での重複削除

    以下のようなエクセル表があったとします。       【列A】  【列B】 【行1】   1     A社   【行2】   2     B社 【行3】   3     B社  【行4】   4     C社 【行5】   5     C社 【行6】   6     C社 この表の下のほうに、【列B】の社名を重複を削除した形で一覧表示させたいのです。この例の場合ですと、              A社              B社              C社 と表示させたいのですが。。。 フィルタ機能を使って重複を削除すれば同じようなことができるのですが、今後の更新作業を楽にするため関数でやりたいのですが、可能でしょうか。 教えてください。

  • Excel 関数を使う? 抽出データ

     以下について教えてください。 ============================== 【基になる表--「A」の表と呼ぶことにします。】  列方向のリストには左から「月」「日」「地域」「数」が並んでいる。  「月」には1月から12月までのデータが、 「日」には1日から30もしくは31日のデータが、 「地域」には北海道、青森、新潟、東京、大阪の5つの地域が、 「数」には売上数が並んでいるとする。 【基になる表から抽出して作られた表--これから便宜上「B」の表と呼ぶことにします。】  列には「地域」の中から北海道と青森を、 行には「月」から9月を、「日」から15日を、 列と行が交差するセルには「数」を置き、「9月15日の北海道と青森の売上数」の合計を抽出したい。  さらに、Bの表において、 「地域名」の北海道を削除して新潟にしたり、9月15日ではなく9月18日に置き換えても、 列と行が交差するセルに自動的に集計結果が表されるようにしたいのです。  ちなみに、Aの表もBの表も同じブックに作り、シートは別にします。 ===================================  DSumやIfSum関数だと私が作りたいBの表のような形式になりません。列方向にしかラベルを置けません。  ピボットテーブルを使った集計ならば、求めているデータ以外のデータも表示されてしまいます。  どうすれば求めていることができるでしょうか?どうか皆さんの知恵をお貸しください。

  • エクセル関数、またはVBA

    どなたか教えてください。 B列に半角数字か空セルがあります。 A列にB列の一定の行数(下記だと4行)の数字の和があります。 ---------- A B C 3 1     1     1         4 0     1     3     0   3 0           2     1   ---------- これを以下のようにA列の数字を対応する4行中のB列がゼロでも空セルでもない行に移動させたいのです。 ---------- A B C 3 1     1     1           0   4 1     3     0     0         3 2     1   ---------- 実は経理の帳簿の貸借なのですが、関数かマクロでできないでしょうか? 自分なりに考えてみたのですが、頭がパンクしました・・・ どうかお助け下さい。

  • エクセルの関数で

    また皆様のお知恵を拝借したく 先週に数値の大きい順番に項目を並べたいという質問をさせていただきましたが、そこに条件を付け足して、同じように求めたいのです。 シート1には A列     B列      C列 1801  りんご    500 1801  みかん    350 1801  なし     700      ・      ・ 1802  みかん    250 1802  ぶどう    600 ・ ・ 1812  かき     1000 B列、C列は以下に項目と数字が並んでいきます。 A列は年月が入ります。 月の入力は毎月20項目程度になります。 そしてシート2のD列1行目から5行目に1801における上位金額の5項目         E列1行目から5行目に1802における上位金額の5項目               ・               ・             O列1行目から5行目に1812における上位5項目 というように取り込みたいのです。 集計シートに関数を入れて自動的に上位項目を表示させるにはどのような関 数を使えばよろしいのでしょうか。 入力されていない場合は表示はしないような形で行いたいのです。 よろしくお願いします。

  • エクセルVBAによるマトリクス表の縦配列

    エクセルVBAで以下のような処理を行うプログラムを作成したいのですが、 シロウトなんで、なかなかスマートに作れません。 どのようにすればいいかご教示いただけたら有り難いです。 (1)下記のように、縦横のマトリクス表にデータが入力されている。   A B C ・・ 1 2 3 ・ ・ (2)これを別シートに縦に2列にデータを並べるように処理する。  左列には"列項目&行項目"、右列には該当するデータをセットする。 A1  A1のデータ A2  A2のデータ  A3  A3のデータ ・   ・ B1  B1のデータ ・   ・ ・   ・ (3)尚、列項目(A.B.C...)と行項目(1.2.3...)の項目数は不定で、セルが空白になるまで、 処理を繰り返すかたちにする。 以上のような条件ですが、よろしくお願い致します。

  • VBAでのデータ並び替え、条件判断について

    Excel2003、VBA6.5でマクロに挑戦しているVBA初心者です。 学生時代にプログラムはかじった事があるのですが、マクロは勝手が分からず、 以下のようなマクロを組みたいのですが、そもそもプログラムはどこの ウィンドウに書くのか?という辺りから調べ出す始末のため、皆様の お知恵をお借りしたく、投稿しました。 【目的】 Sheet1に貼り付けられたデータを、精査(並び替え、条件判断)し、結果をSheet2に出力させたい。 Sheet1(入力データ) 1行目は項目名 データA1,データB1,データC1,データD1,データE1 データA2,データB2,データC2,データD2,データE2 … … データA11,データB11,データC12,データD11,データE11 データA12,データB12,データC12,データD12,データE12 ※データEのみ、整数型で後は文字データになります。  また行数というか、データ量は20~30行程度を想定してます。 Sheet2(出力データ) 1行目は項目名 日付,データB1+データC1の文字列を結合,固定値2,条件判断結果1(データD1より条件判断) 日付,データB2+データC2の文字列を結合,固定値2,条件判断結果2(データD2より条件判断) … ※Sheet1のデータ1行は、すべてが必要でありません。一部のみがあればOKです。  上記の例だと、Sheet1のデータAとEはSheet2では不要です。 ※日付…マクロを走らせた日付をMM/DD形式で出力させたい ※条件判断結果…(データD1がAMだったら09:00、PMだったら13:00、PM2だったら15:00という値を返すようにしたい) 流れを考えてみましたが、 1)データ型を宣言して、 2)1行を配列に読み込む 3) a)データB列、C列の文字列を結合  b)データD列の条件分岐 4)配列からデータを書き出す 5)Sheet1の行が空白だったら処理完了 という感じかと思っているのですが、具体的にマクロにできず(関数をうまく使えず)、困っています。 Findメソッドか、Vlookupあたりで必要になるデータだけ、Sheet1で検索した結果をSheet2に埋めて 行く形でもできるのかな、とも思いましたが、こちらも具体的にマクロにできません。 特に処理スピードにこだわるわけではないですが、あとあと見返して勉強およびメンテできるような、 シンプルなカタチ(1行にコマンドを詰め込んだ複雑な形ではなく)にしていただけると助かります。 どうぞご教授いただけませんでしょうか。 よろしくお願いいたします。

  • Excel VBAでデータを自動処理したい

    Excelで大量のデータ処理をしなくてはならないのですが、以下の処理をExcel VBAで自動処理できないでしょうか? どなたかお知恵をお貸しください。 (1)A、B、C列からなるリストがあります。A,B列にはそれぞれオートフィルタが設定してあり、C列は空白です。A列、B列にそれぞれ条件を設定し、抽出したデータのC列(空白)に特定のデータを入力します。A列、B列2つの条件の組み合わせが100通りくらいあり、現在手動でオートフィルタを設定し、C列にデータを入力しております。例えばA,B列の条件の組み合わせと、それに対応するC列に入力するデータを表にしたテーブルを別に作り、A,B列の条件を自動に設定して、抽出し、C列にデータを自動に入力することを、テーブルの一番上の行から最後の行まで繰り返す、というようなことをVBAでExcelにしてもらいたいのです。自分でちゃんと勉強し、調べて、それでも分からなかったらお聞きするというのが筋だと思うのですが、今この仕事に追われて、時間がありません。(ほとんど毎日午前様です。)この仕事が片付いたら、じっくりVBAを勉強したいと思っております。どうぞよろしくお願いいたします。