- 締切済み
エクセル削除行を別ファイルへ抽出
エクセル初心者のため、お教え下さい。 Aファイル(1000行)より、行削除してBファイル(800行)を別ファイルとして保存しました。 削除した200行のデータをCファイルとして保存したいのですが、どうすれば良いでしょうか? ちなみに、Aファイル、Bファイルとも有ります。 どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Mr-WATSON
- ベストアンサー率59% (117/196)
では具体的な方法を。 1:Aデータにつけ足すようにBデータをコピー&ペーストし、1800行のデータにします。 当たり前ですが、双方の列を一致させるようにします。 2:1800行のデータすべてを選択し(列方向も最終列まででOK) データ→並べ替えを選びます。前提で先頭列(一応A列とします)を基準にすることにしたので、最優先させるキーとしてA列を選びます。 前提でユニークデータであることがわかっているので、2番目以降の条件を選ぶ必要はありません。 A列をキーに選んだら、昇順で並べ替えます。 3:正しくソートされれば、Aにしかないデータは1行で、Bにもあるデータは2行続けて並んでいるはずです。 4:正しくソートされているかを確認し(大体でいいです。全てを確認することはありません、そんなヒマがあれば、手作業で抽出すればよいのです)先頭列の前に空白を3列挿入します。ここにIF関数の式を入れて抽出します。この空白列がA列、B列、C列になります。データの入っている先頭列はD列です。 5:まずA1のセルに入れる計算式です。 =IF(D1=D2,"*"," ") D1とD2が同じ値ならA1に「*」を入れ、違う値なら空白にしろという式です。つまりすぐ次の行と同じなら「*」が入ります。 この式を同じA列の最終行の1行手前までコピーします。 最終行には式を入れてはいけません。 6:同様にB2(B1ではありません、B1は空白にします)に計算式を入れます。 =IF(D2=D1,"#"," ") A列に入れた式と同様です。D列の値がすぐ上の行と同じ値ならB列に「#」が入ります。 この式をB列最終行までコピーします。 7:5と6の作業で、AもBも空白の行が1行しか存在しないデータの行です。これを抽出すればCデータになります。 A列、B列、C列オートフィルタをかけますが、1行目にデータがあるとこれがフィルタにかからないので、空白でいいから1行挿入しておきます。 A列とB列ともオートフィルタで空白セルを選びます。ここで表示された行がCデータに当ります。 8:このままだと抽出できないので、表示されているすべての行のC列に「*」を入力します。 表示されている一番上に「*」を入れて、オートフィルで最終行まで入れてしまって大丈夫です。 9:一旦A列とB列のオートフィルタを解除してから、今度はC列で空白セルを表示します。 表示されている行をすべて削除します。 10:C列のオートフィルタを解除するとCデータだけになっていますから、A~C列を削除します。 11:2でソートしてしまったので、もし元の順序に戻す必要があれば、前準備でつけた続き番号の昇順でソートしなおせばよいのです。 わかりましたか? 式を1つにすることも可能だと思うのですが、考え方としてわかりやすく、応用もでき、ここで説明しやすい方法ということで、ちょっと段階が多いのですが、このような説明にしました。わかりにくい点があれば、この欄でご質問ください。
- Mr-WATSON
- ベストアンサー率59% (117/196)
回答者No.1です。 補足にすぐ気付かず失礼しました。 文章でうまく説明できるかわかりませんが、やってみます。 一度下書きしてみたら超長くなったので、まず前段の説明だけ書きます。次の回答で具体的な方法を書きますね。 少し余計に手間をかけているところや、列の位置など必須条件でないものもありますが、説明をわかりやすくするためなので、コツがわかればその辺はわかってくるとと思います。 注釈もあまり詳しく書きませんでしたので、わからない点があったら質問してください。 また、いきなり本データでやらないで、10行くらいの項目も少ないデータを作ってみて、それで説明を見ながらやってみてください。理解が早いと思います。 念のため、元データのバックアップコピーは取っておいてくださいね。 まずAデータとBデータを合体させるのですが、前提条件の確認です。 名簿ということなので先頭列は名前と思われますが、これがユニークデータという前提で、各行のキーとします。 他の項目(電話番号など)がユニークデータの場合はコピーまたは移動させて先頭列(一応A列とします)にあるものとします。 また、最終的に抽出するCデータの並び順は元のAからBを取り除いたままの順~つまりAデータの時の順序になっている必要があるでしょうか? もしそうであれば、前準備として、先にAデータに続き番号を振っておく必要があります。Bデータに振る必要はありませんが、列数が食い違うと面倒なので、Aデータの最終行に振るなり、Bにもダミーを振ってもいいでしょう。自分なら(ちょっと自信がないので)万一抽出がうまくいかなかった時の原因解明のためにABの区別がつくように番号を振るでしょう。 説明のためにデータは1行目から入っているとします。「名前」「住所」など項目名が1行目ならデータは2行目からですが、説明が面倒なので、一旦1行目を削除してこの通りにやってみてください。 ここまでが準備です。次の回答で実際の式などを書きます。
- Mr-WATSON
- ベストアンサー率59% (117/196)
ExcelならここよりOffeceアプリの板へ行かれた方がいいかとは思いますが… データの内容というか、どのような種類のデータか、AファイルとBファイルの違い(何を条件に200行削除しているか)などにより、やり方は違ってくるので、詳しい方法まで書けませんが、大雑把な考え方を。 ただしAファイルもBファイルもそれぞれ1枚のワークシートで完結していること。 どこかの列(例えば先頭列)がそれぞれユニークデータであり、BファイルのそれはAファイルに一致するものが必ずあること。 (ユニークデータとは唯一無二のデータで、例えば名簿のようなものなら同姓同名は「鈴木太郎1」「鈴木太郎2」のように何らかの区別がつくこと) AファイルにBファイルの行を追加します。 つまり全体は1800行となり、Bファイルにあるデータはすべて2行ずつ存在することになります。 このなかから1行しかないデータを抽出して、Cファイルとして保存する。 こういうことでしょうか?それならIF関数で抽出可能です。 もう少し詳しく(例えば「名簿」で同一人物は居ない~など)がわかれば関数の式も作れそうですが…
補足
お返事が遅くなってしまい申し訳ございません。 質問板を間違えたようですね、ご指摘ありがとうございます。 データのカテゴリーは名簿です。同一人物は居ません。個人情報として1行単位で構成されています。 作業工程は、データベースからExcelへインポートし、Aファイル(1000件)を作成しました。その中から不備項目の行を削除(200件)していき、Bファイル(800件)として別名保存しました。 とりあえず、ご指示通り、AファイルにBファイルの行を追加したいと思います。 その後の抽出方法をお教えいただければ幸いです。
お礼
具体的な方法をお教えいただきましてありがとうございました。 また、ご連絡が遅くなったことをお詫びいたします。 さっそく手順通り、作業させていただいた結果、無事新ファイルを作成することができました。 IF文はかなり便利ですね。エクセル初心者としては、このあたりの計算式や応用を、勉強していくのが上達する方法かも知れませんね。 ご説明が非常にわかりやすく、大変感謝しております。 ありがとうございました。