dポイントプレゼントキャンペーン実施中!

この度は非常にお世話になります.
多くの質問の中からお選び頂きまして幸いです.

本日はデータ抽出のテクニックを伺いたく質問致しました.

というのはどういうことかと申しますと
(1)メモ帳に載った電話番号
(2)エクセルに載った電話番号及び氏名・住所
という2つのデータが存在するのですが,
(1)の方と同じ情報だけを(2)に残したく思っております.

つまりエクセルの方の情報(約5万件)の内,
メモ帳(約2万件)の同じ電話番号の載ったデータだけを抽出して,
残った約3万件に関しては全て消したいということになります,

この作業を目視で行なったら1000件で力尽きたので(苦笑),
関数などを用いてあっという間に行える方法をご教示願います.

お手数ですが何卒宜しくお頼み申し上げますm(__)m
因みにエクセルはkingsoftのspreadsheetsと使用中です.

A 回答 (4件)

>電話番号



元のエクセルに載ってた電話番号セルを選び、『数式バーに』具体的にどのように表示が現れるかよく確認します。セルの見た目の話をしてるんじゃないので、間違えないように注意してください。

電話番号ですから、たとえば
03-1234-5678
のように書いてあるかもしれませんし、あるいは
0312345678
のように数式バーにはなっているかもしれません。
あるいはもっと違う表示になっているかも?しれません。あなたのエクセルの「事実」を注意して調べて下さい。


次に、CSVをエクセルに持ち込んで、できたらサンプルとして見た目同じ電話番号のセルを見つけて、そちらを選んだ時には数式バーにどう表れるか、こちらも注意して調べます。

数式バーに現れる「具体的な記載内容」が、元のエクセルの電話番号セルの記載と「違っていたら」、それは同じじゃないので検査できません。
たとえば
0312345678
のつもりが
312345678
のように、アタマのゼロが飛んでたりしたら当然「違う内容」です。そういうのは「同じじゃない」ので、原則としてそのまま調べることはできません。

たとえば元のエクセルが
03-1234-5678
なのに、CSVから持ってきたのが
312345678
だったりしたら、こちらもやっぱり「違う内容」です。


あなたの元のエクセルと、CSVから持ち込んだ電話番号と、それぞれの「具体的な数式バーの中身の状態」によって、関数をどういう具合に工夫すれば良いのか変わります。
「補足」でちょこちょこっと思い付きで継ぎ足しても満足な結果は得られませんので、一回このご相談は解決で閉じて、あなたのエクセルの元の状態とCSVをエクセルで開いたときのそれぞれの数式バーの中身の具体的な様子を正しく情報提供して、ご相談を書きなおして改めて投稿してみて下さい。
    • good
    • 0

> 因みにエクセルはkingsoftのspreadsheetsと使用中です


この意味がイマイチ掴めないのですが・・
両者は全く別のソフトですよ。
KINGSOFT社のスプレッドシートをお使いであるということで
話を進めていきます。


まずは、スプレッドシートの
> (2)電話番号及び氏名・住所
のファイルに新規シートを追加します。
(既に白紙のシートがあるのであれば、それを使っても結構です。)

用意された白紙のシートに
> (1)メモ帳に載った電話番号
を貼り付けましょう。
単純に「メモ帳で全てをコピー、スプレッドシートに貼り付け」と言う操作でOKです。

ここで重要なのが
「スプレッドシート側の“電話番号”」「メモ帳側の“電話番号”」のフォーマットが
バッチリ同じでないといけない、と言うこと。
例えば
・スプレッドシートでは「011-111-2222」
・メモ帳では「0111112222」だったり「011(111)2222」だったり
してしまうと、これはもう整合のしようがありません。

あとは、スプレッドシート側の操作です。
どこでも良いので使っていない列に(添付図ではD列に入れています)
  式:=COUNTIF(Sheet2!A:A,A2)
として、全行にコピー・貼り付けしてやります。
COUNTIF関数に関しては別途お調べいただきたいのですが、
上記の書き方だと
「A2の内容に合致するセルが、Sheet2のA列にいくつあるか?」
を返してくれます。
つまり、合致するものが無い(メモ帳に無い)ものには「0」、
合致するものが在る(メモ帳にある)ものには「1以上」が返ってきます。

で、出来上がった表に対し「自動フィルタ」をかけてやります。
「データ」メニューから、「フィルタ」⇒「自動フィルタ」を選択すると、
各列の一番上のセルに「▼」がつきますので、
添付図で言うとD列(判定)の▼をクリック。
「(オプション)」を選択し、「0と等しくない」として、OK。
すると、「0以外(=メモ帳に存在する)のデータ行」だけが抽出されてきます。

その状態のまま、全セルを選択(Ctrl+A)し、コピー(Ctrl+C)。
新規シート(新規ファイルでもOK)に貼り付けて、余分であるD列を列削除してやれば、
お望みの「メモ帳の電話番号と合致する行だけのリスト」が完成します。
「【エクセルとメモ帳を照合したい】」の回答画像3
    • good
    • 0

>因みにエクセルはkingsoftのspreadsheetsと使用中です.


ちょっと環境が違うので確認はできませんが。
ステップ1
メモ帳の内容をすべて選択、コピー
別途シートを準備しておいて張り付ける。
この段階で、各セルに電話番号が入りますか?
以下、仮にA列に電話番号が張り付けられたとして話を進めます。

ステップ2
エクセルのデータで空いている列に Countif関数を入れます。
=COUNTIF(Sheet2!A:A,A2) とか入れて、エクセルデータの電話番号が
張り付けたシートに存在するかどうかを調べます。
その電話番号があれば 1 なければ 0 です。
その式を、下までコピー

ステップ3
オートフィルターを使って 結果が 0 の行だけ表示させます。
表示された行をすべて選択して、削除します。
オートフィルターを解除します。

これでご希望のデータだけが残ると思いますが、いかがでしょうか。
    • good
    • 0
この回答へのお礼

hallo-2007様

早速ご回答頂きましてありがとうございます*

先程ご案内の通りCOUNTIFを試みたのですが,
メモ帳と同じ番号なのに0と表示されてしまったり,
2回やったら何故か違う結果になってしまいました…

なのでよろしかったら原因をお教え願えますでしょうか??
度々お手数おかけして大変恐縮なのですが,
ご助言を宜しくお頼み申し上げますm(__)m

お礼日時:2013/07/27 18:44

0.エクセルの元データをシート1に用意する


1.メモ帳のデータをシート2のA列にコピー貼り付ける
2.元データの電話番号がA列にあるなら、そのE列に
  =COUNTIF(Sheet2!A:A,A2)
  のように記入して、メモ帳の電話があれば関数が数を計算するのを確認する
  キングソフトはエクセルじゃないので数式の書き方とか違いますが、COUNTIF関数はありますのでご自分で数式を作成してください。

3.オートフィルタを使ってE列を絞り込み、数字があった行を絞り込んでコピー、シート3に貼り付ける
    • good
    • 0
この回答へのお礼

keithin様

迅速なご回答どうもありがとうございます^^
早速COUNTIFの関数で計算してみたのですが,
メモ帳と同じ番号なのに0になってしまったり,
2回やって別々の結果になってしまいました^^;

もし差し支えなければ何が原因かお教え頂けませんでしょうか??
何度も恐れ入りますがどうぞ宜しくお願い致します.

お礼日時:2013/07/27 18:41

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