« 2014年7月 | トップページ | 2014年9月 »

2つの表を比較して、片方にだけあるものを抽出する。

この記事は自分用の覚書です。

■ sheet1 の「イベント来場者」と sheet2 の「顧客一覧」を比較して、 "「イベント来場者」にはあって「顧客一覧」にはない人" を見つける。
(「イベント来場者」にだけあるデータ)
Windows8 Pro 64ビット + Excel2013

イベント来場者

顧客一覧

※表中の氏名はダミー

・前提
「イベント来場者」の列には同姓同名がある。

同じ会社には同じ氏名の人はいない。

どちらの表にも、氏名と社名の組み合わせで重複しているデータはない。

1. sheet1 の C2 から C23 に A列の氏名と B列の社名を結合したデータを作る。
・sheet1 の C2 に入れて下方へコピーする式
=CONCATENATE(A2,B2)

 sheet1 の A列の氏名と B列の社名を結合したデータを C2 から C23 に作る。

2. sheet2 の D2 から D26 に A列と C列を結合したデータを作る。
=CONCATENATE(A2,C2)

sheet2 の A列と C列を結合したデータを D2 から D26 に作る。

3. sheet1 の D列に sheet2との比較の結果を入れる。
=COUNTIF(Sheet2!$D$2:$D$26,Sheet1!C2)

sheet2 の D2 から D26 の範囲に、 sheet1 の C列にあるデータが何個あるかを調べる。

sheet2 の D2 から D26 の範囲に、 sheet1 の C列にあるデータが何個あるかを調べる。

4. sheet1 の D列でオートフィルターを実行して、セルの値が「0」のものを抜き出す。
「データ」タブ-「並び替えとフィルター」-「フィルタ」

D列のセルの値が「0」のものが、 "「イベント来場者」にはあって「顧客一覧」にはない人"。 (「イベント来場者」にだけあるデータ)

「イベント来場者」にだけあるデータ


人名と社名を結合して1つの文字列にすることで、同姓同名(字が同じの別人)の場合に違いがでるようにした。
同じ会社に同じ氏名はないのが前提。同じ会社に同じ氏名がある場合は、日本花子1 や日本花子2 としておくなど、区別がつく加工があらかじめ必要。

sheet1 の C列にある

=COUNTIF(Sheet2!$D$2:$D$26,Sheet1!C2)

の式は、 sheet2 の D2 から D26 の範囲のなかに、 sheet1 の C2 の値がいくつあるかを数えている。

式の結果が「1」ならば、その「氏名と社名の組み合わせ」は sheet2 の D2 から D26 の範囲のなかに1つある。
( sheet2 の「顧客一覧」に、その「氏名と社名の組み合わせ」がすでにある。)

式の結果が「0」ならば、それは sheet2 の D2 から D26 の範囲のなかにはない。

式の結果が「0」のものをまとめれば、

"「イベント来場者」にはあって「顧客一覧」にはない人"
( sheet1 の「イベント来場者」にだけあるデータ)

を見つけたことになる。

| | コメント (0) | トラックバック (0)

「複数のセルの組み合わせの重複」を省く。

この記事は自分用の覚書です。

K.Yaさん。
この前の「フィルターオプションの設定」に関して、「複数のセルの組み合わせが重複しているデータ」を除いた表を作る件をまとめました。
またわからなくなるようなことがあったら、このページを見てください。
(8月15日:説明が間違えていたところを直しました。ご指摘ありがとうございました。)

■例:列「メーカー」のセルと、列「製品」のセルの組み合わせに、重複がない状態を作る。
Windows8 Pro 64ビット + Excel2013

処理の対象になるのは次のような表。
「メーカー」が「パナソニック」、「製品」が「テレビ」の行が3つある。
これを「パナソニック」と「テレビ」の組み合わせについては、1行あるだけの表にする。

2tunoretunokumiawasegatyouhuku1

「フィルターオプションの設定」を使う。
(「データ」タブ-「並び替えとフィルタ」-「詳細設定」)

■フィルターの準備と実施

1.フィルターをかける対象である表と同じ「列見出し」を、表とは別の行に作る。

2tunoretunokumiawasegatyouhuku22.作った「列見出し」より下の行に、「検索条件」を書き込んでいく。

作った「列見出し」から下の行が、「フィルターオプションの設定」の「検索条件範囲」になる。
図では15行目から下の範囲。

もとになる表と異なる列の同じ行に「列見出し」を入力しない理由は、フィルターが実行されて、重複する行が非表示になったときに「検索条件」も非表示になるのを避けるため。
(検索条件も非表示になってかまわないのなら、異なる列の同じ行を使ってもよい)

3.「検索条件」を入力していく。
(検索条件の詳細については、このページの下部を参照)

フィルターは「データを抽出する機能」なので、「検索条件」は「元の表から抜き出したいデータ(抽出後の結果)」になるように作る。

「メーカー」が「パナソニック」の行は抜き出したいので、「メーカー」の下のセルに「パナソニック」と入力する。( A16 のセル)
「製品」列には何も入力しない。

この条件で、列「メーカー」で「パナソニック」と入力してある行をすべて抽出する。

続けて、パナソニック以外のメーカーを抽出するために、A17 に

<>パナソニック

と入力。

「パナソニック以外」とは、「パナソニックではない。パナソニックと等しくない」ということ。エクセルで「等しくない」を意味するには <> (「不等号」)を使う。

フィルターの検索条件は、もとになる表に対して適用される。
最初の条件で抽出された結果に対して、2つ目の条件が適用されるのではない。

これで必要な条件はすべて入力したことになる。条件を入力後は次のようになる。

2tunoretunokumiawasegatyouhuku3_2

4.フィルターオプションの設定を実行する。
(「データ」タブ-「並び替えとフィルタ」-「詳細設定」)

・「抽出先」では「選択範囲内」にチェック。

・「リスト範囲」は、 A1 から B13 を選択。
表全体を選んでいるのがポイント。
表全体を選んで重複を省く操作をすると、全く同じ行たちを重複とみなす。
つまり、図では「パナソニック」と「テレビ」の組み合わせになる3つの行たち。

・「検索条件範囲」は、 A15 から B17 を選択。

・「重複するレコードは無視する」にチェック。
列「メーカー」で「パナソニック」がある行を抜き出すと、列「製品」で「テレビ」がある3つの行を抜き出すことにもなるので、それを1つにするため。

2tunoretunokumiawasegatyouhuku4_25.「OK」をクリックすると、 A1 から B13 の表にフィルターが実行される。

「パナソニック」と「テレビ」の組み合わせになる3つの行のうち、2行目は表示されて、5行目と10行目が非表示になる。
(「メーカー」が同じパナソニックでも、「製品」がテレビ以外なら表示されている。)

2tunoretunokumiawasegatyouhuku5_2


■フィルターオプションの設定の「検索条件」について

・異なる行はOR条件での検索
・同一行はAND条件での検索

2tunoretunokumiawasegatyouhuku6_216行目に「パナソニック」と入力しています。意味は、

列「メーカー」で「パナソニック」という入力があるものは抜き出す。

になります。

17行目の「<>パナソニック」。
この条件は、同じ「メーカー」の列で行は異なっているため、OR条件。
意味は、

もしくは、「パナソニック」以外を抜き出す。

になります。

列「製品」では条件を入力していません。
意味としては、

列「製品」については、抜き出す際の条件は付けないですべて抜き出す。

です。

「製品」の列は無視して何もしない。という意味ではありせん。

フィルターを実行するとは、何かを「抜き出す」ことに違いないからです。
フィルターオプションで条件の指定がないのは、無視して何もしないという意味ではなく、「条件は付けないで、すべて抜き出す」ということです。

AND条件は同じ行にします。たとえば、16行目に「パナソニック」、「テレビ」と入力します。
意味は、

列「メーカー」が「パナソニック」、かつ、列「製品」が「テレビ」であるものを抜き出す。

になります。
これだと重複しているものだけが表示された結果になります。

2tunoretunokumiawasegatyouhuku7_2■文字列を入力しただけの場合は前方一致
例の表だと、

と入力するだけで、

パナソニック

が検索の対象になります。
この場合、「パ」に続く文字がある場合は、それも対象になります。

表では、「パ」と入力するだけでもよかったのですが、わかりやすくするために「パナソニック」と入力しています。

それと、「 = を付けなければ前方一致= を付けると完全一致)で検索を行う」ということを、常に意識しながら操作してください。そうでないと思わぬミスを起こすことがあります。

例の表では、「パナソニック」以外に「パナソニック」という文字が付いたものはないとわかっているので、等号を付けないで「パナソニック」と書きました。

ただし、文字列を入力しただけだと前方一致で検索しますから、この場合は、「パナソニック○○」など「パナソニック」に続いて別の文字があるものも検索の対象に指定していることになります。

例のようにデータが少なければ、もし「パナソニック○○」が混ざっていても一目で気づけるでしょうが、データが多くなってくると、「パナソニック」だけを対象にしたつもりで、「パナソニック○○」が混ざっていることに気づかないままになるかもしれません。

■= (等号)を付けると完全一致
="文字列"
と入力すると完全一致で検索を行います。
エクセルでは、式の中で使う文字列は "" (ダブルコーテーション)で囲むのがルールです。

="パナソニック" で パナソニック のみが対象になります。

■ワイルドカード( * と ? )が使える。
* (アスタリスク)を付けると「任意の文字列」を指定したことになります。
*パナソニック
と入力すると、前方一致と後方一致を同時に指定したことになります。

前方一致で

パナソニック と パナソニック○○

さらに、後方一致で

□□パナソニック

も検索の対象になります。

* は「任意の文字列」を対象にするので、
パナソニック*株式会社
と入力すると、
パナソニック と 株式会社 の間に文字があるもの(何文字でも)
と、
パナソニック株式会社
を検索の対象にします。

? (クエスチョンマーク)を付けると、「任意の一文字」を指定したことになります。
パナソニック?????????株式会社
のように ? の個数を変えることで、パナソニック と 株式会社 の間に ? の個数の文字が入っているものを対象にできます。この場合は ? が9つあるので9文字入っているものを対象にします。
パナソニックコミュニケーション株式会社 だとか。

ただし、検索条件で文字列X に付けた ? の個数よりも、表中の文字列X に続く字数のほうが多い場合は、それらのデータもすべて検索の対象になります。

パナソニック株式会社
パナソニックコミュニケーション株式会社
パナソニック商事

とあって、

パナソニック???

と入力してあると、パナソニックに続く ? の個数が3つなので、

パナソニック株式会社
パナソニックコミュニケーション株式会社

が抽出されます。
パナソニック商事 は、パナソニックに続く文字数が2個なので検索対象になりません。

■別のシートに抽出する。
抽出したデータを別のートに書き出すこともできます。

抽出結果を別シートへ書き出す場合は、別シートを開いてからフィルターオプションの設定の操作をします。
たとえば、sheet1にある表を使って、sheet2に結果を出したければ、sheet2を開いてから行います。

このときは、「抽出先」を「指定した範囲」にします。
そして「抽出範囲」に sheet2の任意のセルを指定します。

| | コメント (0) | トラックバック (0)

「核爆発」を気軽に扱わないで。

以下では、映画『GODZILLA』(2014年ハリウッド版)の結末や、平成13年『ゴジラ モスラ キングギドラ 大怪獣総攻撃』の内容にふれています。まだ見ていない方はご注意を。


今日は8月6日。広島に原子爆弾が投下された日。(1945年:昭和20年)

この日、日本は歴史上初めて原子爆弾での攻撃を受けた国となり、アメリカは歴史上初めて、核兵器を実戦使用した国となった。
この話をするときは、日本にもアメリカにも、「今のところ唯一」という言葉も付けたほうがいいかもしれないけど。

映画『GODZILLA』(2014年ハリウッド版)を見てきた。
「面白かった」・「面白くなかった」のどちらかで答えれば「面白かった」だ。

でも、この記事の冒頭といい、こういう振りをするぐらいだから言いたいことがあるわけで――

気もちとしては、面白かったけど……という感じか。引っかかっているのは「核爆発」の扱いだ。

それは、サンフランシスコをちょっと離れたあたりの海上で起こってしまった。

ストーリーのなかでは、ビキニ環礁で爆発させたものより大きい何十メガトンという爆発力だといってたけど、あの距離でそれなら、サンフランシスコは壊滅だろ。
というか、西海岸はもう人が住める場所じゃなくなるんじゃないか。

なのに、「愛する家族と再会し、脅威は去った」みたいな「いい話」にして終わらしちゃったのがどうも気になる。

前にもここで同じことを書いた記憶があるけど、ドラマでも映画でもなんであっても、アメリカは「核爆発」をエンターテイメントのなかで軽々しく使ってはいけないと思う。

核爆弾を実戦で用いた世界で唯一の国なんだから。

そういうことでは、日本の作り手だって僕に言わせれば同じだ。アニメでもドラマでも「きのこ雲」を気軽に使いすぎだ。

「核爆発」だといっさい言ってない場合もあるけど、「きのこ雲」が出たら想起するじゃないか。
途方もない強力な爆発が起こったことを視聴者に印象付けるのに、「きのこ雲」を使うのが演出としては簡単だからだろうけどね。

今年、映画『GODZILLA』が公開され、初公開から60周年ということもあって、ここ最近テレビでかつてのゴジラ映画が放送されている。

なかのひとつ『ゴジラ モスラ キングギドラ 大怪獣総攻撃』を見た。
(平成13年に公開された通算25作目だとか。)

開始直後、立花泰三 准将(宇崎竜童) が、昭和29年のゴジラに対する攻撃は、「第二次大戦後平和憲法のもとに創設された防衛軍が経験した唯一の実戦」だと語る。
(物語のなかの日本は架空の歴史上の日本。"防衛軍" という軍隊を擁している。)

そして、立花は「……以来我が国は内外に誇る平和を保っている」と続ける。

さらに終盤で、成功でも失敗でもゴジラに対して人間側からの最後の抵抗になるであろう出撃の前に――「実戦経験なきこそ最大の名誉だと思っていました。」――と、立花は上官に告げる。
(昭和29年のゴジラ出現の際には、立花はまだ子供だった設定。つまり、立花を含めて "防衛軍" の隊員たちは実戦経験がない。)

「集団的自衛権」という言葉を聞かない日はないんじゃないかというぐらいの昨今。

平成13年(西暦2001年)――戦後56年にして今から13年前に、「実戦経験なきこそ最大の名誉」と登場人物に語らせた映画の作り手たちは、戦後に過ぎた時間より短い年月で「実戦経験がある」と言えてしまう時代が来そうになったことをどう感じるだろう。

映画の良しあしは別にして、平成13年版ゴジラ映画の作り手たちは、平和の誇らしさと大切さを訴えようとしていたのは間違いないだろう。

戦後69年が過ぎた時代のクリエイター、そして日本以外のクリエイターのみなさんにも、そういう気持ちを持ち続けてほしい。そして、「核爆発」を「きのこ雲」を気軽に扱わないでほしいと僕は思っている。

| | コメント (0) | トラックバック (0)

離れた複数の列に重複がない表を作る。

この記事は自分用の覚書です。

K.Yaさん。
「フィルターオプションの設定」がうまくいかない件ですが、次のようです。
来週にそちらに行くことになってます。わからない部分があれば、その時にでも。
(もっと簡単なやり方もあるかと思いますが、僕にわかるのはこういうのということで勘弁ください。)

■例:「担当者」の列にも「部署」の列にも、重複がない状態を作る。
Windows8 Pro 64ビット + Excel2013

まず「担当者」の列で重複がない状態を作る。次に「部署」の列で重複がない状態を作る。
その結果、「担当者」の列にも「部署」の列にも、重複がない表になる。
※列見出しも一緒に選択するのがポイント

担当者の一覧の画像

1.「データ」タブ-「並べ替えとフィルター」-「詳細設定」を選択
「列見出しが含まれているか特定できない」といったメッセージが表示されたら、気にせずOKをクリック。

2.「抽出先」は「選択範囲内」を選択

3.「リスト範囲」には、A1からA8を選択
表全体を選択すると、まったく同じ行たちを重複とみなすので要注意。
(上の表には、「まったく同じ行たち」は無い。)

4.「重複するレコードは無視する」にチェックを入れてOKをクリック

5.「担当者」の列で重複がない表ができる。
A列6行目(上田敏)が非表示になる。
(A列4行目の「上田敏」の方を表示した状態になっている。1行目から見て行って、若い順番のデータが残される。)

6.表をコピーして任意の場所へ貼り付ける。
同じシートに貼り付ける場合は、元の表よりも下の行になるように貼り付ける。

7.もう一度、「データ」タブ-「並べ替えとフィルター」-「詳細設定」を選択

8.「抽出先」は「選択範囲内」を選択

9.「リスト範囲」には、コピーした表の「部署」の列を指定。
このとき、列見出し「部署」も一緒に選択する。

10.「重複するレコードは無視する」にチェックを入れてOKをクリック
「部署」の列が重複していない状態になる。
これで、「担当者」の重複がなく、「部署」の重複もない表になった。

あるいは、
5.「担当者」の列で重複がない状態ができる。
のあと、その状態の表全体をコピーして、別のシートに貼り付ける。
その表で、上記 8. からの手順を行って「部署」の列の重複がない状態を作る。


手順6. で元の表と同じ行の別セル――たとえば E1をクリックして貼り付けた場合は、いったんフィルタをクリアする。
(「データ」タブ-「並べ替えとフィルター」-「クリア」)

元の表と同じ行の別セルに貼り付けると、非表示になっている行の影響を受けて、せっかくできあがった重複しない状態がきれいに表示されない。

上図の表の場合は、もとは表全体で8行あるので、6行目が非表示になって、7行の表になる。

・「担当者」の列で6行目の「上田敏」が非表示になって7行の表になった状態

>「担当者」の列で、6行目の「上田敏」が非表示なった状態

それをコピーして、E1から貼り付けると、6行目が非表示なっているので、7行の表がさらに1行分非表示になったことになり6行の表になってしまう。

Hihyoujinoeikyou_2

| | コメント (0) | トラックバック (1)

« 2014年7月 | トップページ | 2014年9月 »