重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

エクセル初心者のため、お教え下さい。

Aファイル(1000行)より、行削除してBファイル(800行)を別ファイルとして保存しました。
削除した200行のデータをCファイルとして保存したいのですが、どうすれば良いでしょうか?
ちなみに、Aファイル、Bファイルとも有ります。

どうぞよろしくお願いいたします。

A 回答 (3件)

では具体的な方法を。



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つにすることも可能だと思うのですが、考え方としてわかりやすく、応用もでき、ここで説明しやすい方法ということで、ちょっと段階が多いのですが、このような説明にしました。わかりにくい点があれば、この欄でご質問ください。
    • good
    • 0
この回答へのお礼

具体的な方法をお教えいただきましてありがとうございました。
また、ご連絡が遅くなったことをお詫びいたします。

さっそく手順通り、作業させていただいた結果、無事新ファイルを作成することができました。
IF文はかなり便利ですね。エクセル初心者としては、このあたりの計算式や応用を、勉強していくのが上達する方法かも知れませんね。

ご説明が非常にわかりやすく、大変感謝しております。
ありがとうございました。

お礼日時:2009/12/18 19:02

回答者No.1です。


補足にすぐ気付かず失礼しました。

文章でうまく説明できるかわかりませんが、やってみます。
一度下書きしてみたら超長くなったので、まず前段の説明だけ書きます。次の回答で具体的な方法を書きますね。
少し余計に手間をかけているところや、列の位置など必須条件でないものもありますが、説明をわかりやすくするためなので、コツがわかればその辺はわかってくるとと思います。
注釈もあまり詳しく書きませんでしたので、わからない点があったら質問してください。
また、いきなり本データでやらないで、10行くらいの項目も少ないデータを作ってみて、それで説明を見ながらやってみてください。理解が早いと思います。
念のため、元データのバックアップコピーは取っておいてくださいね。

まずAデータとBデータを合体させるのですが、前提条件の確認です。
名簿ということなので先頭列は名前と思われますが、これがユニークデータという前提で、各行のキーとします。
他の項目(電話番号など)がユニークデータの場合はコピーまたは移動させて先頭列(一応A列とします)にあるものとします。

また、最終的に抽出するCデータの並び順は元のAからBを取り除いたままの順~つまりAデータの時の順序になっている必要があるでしょうか?
もしそうであれば、前準備として、先にAデータに続き番号を振っておく必要があります。Bデータに振る必要はありませんが、列数が食い違うと面倒なので、Aデータの最終行に振るなり、Bにもダミーを振ってもいいでしょう。自分なら(ちょっと自信がないので)万一抽出がうまくいかなかった時の原因解明のためにABの区別がつくように番号を振るでしょう。

説明のためにデータは1行目から入っているとします。「名前」「住所」など項目名が1行目ならデータは2行目からですが、説明が面倒なので、一旦1行目を削除してこの通りにやってみてください。
ここまでが準備です。次の回答で実際の式などを書きます。
    • good
    • 0

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ファイルの行を追加したいと思います。

その後の抽出方法をお教えいただければ幸いです。

補足日時:2009/12/04 12:46
    • good
    • 0

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