[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『異なる2つのファイルのシートを比較し、2つの条件にあったものに印(*)をつけたい』(困りました・・・)
異なる2つのファイルシートAとBで、条件にあったものに * をつけたいのですが、
なかなか上手くいきません・・・
【条件】
ファイルシートA M列(M4〜)
ファイルシートB D列(D2〜)
ファイルシートA N列(N4〜)
ファイルシートB E列(E2〜)
が同じならば、ファイルシートB の
L列に * を入れたいのです。
ファイルシートA
A B C D E F G H I J K L M N ・・・ 4 あ い う え お か き く け こ さ し す せ 5 そ た ち つ て と な に ぬ ね の や ゆ よ
ファイルシートB
A B C D E F G H I J K L M N ・・・ 2 た ち つ す と な に ぬ ね の は * 3 ま や ら わ よ ん あ い う え お *
条件が、2つあり、どのように処理したらよいか??です・・・
どなたかお知恵をお貸しいただけませんでしょうか?
よろしくお願いいたします。
どちらか一方の組みが同じだったら「*」で良いんですかね? Bシートの L2=IF(AND(COUNTA(A!M4,B!D2,A!N4,B!E2)>0,OR(A!M4=B!D2,A!N4=B!E2)),"*","") 下にコピー。
(HANA)
ブックも違ったのですね。 AシートがAと言う名前のブックに有るとして (Aシートが開いている状態の時の式です) Bシートの L2=IF(AND(COUNTA([A.xls]A!M4,[A.xls]A!N4,D2,E2)>0,OR([A.xls]A!M4=D2,[A.xls]A!N4=E2)),"*","") 下にコピー。
(HANA)
横から失礼します。(別の人の質問に入ると掟破りになるでしょうか?)
HANAさん、私は出来ました。 以前、重複の自分の質問でシート間の重複を調べたい旨、書かせていただきましたが 「 困りました・・・」さんの質問が、同じような感じだったので、 HANAさんの式のセルをすべて1(A!M1・・・等)に作り変えてみたところ、みごと 思い通りの結果を出すことが出来ました。
重複で教えていただいた方法(式)の応用だと思いますが、 自分で、ここまでの応用は、できませんでした。(色々チャレンジしてみたのですが) 明日から仕事で生かすことができます。ありがとうございます。
「 困りました・・・」さん、横からごめんなさい。
(ranmal)
ranmalさん 出来ましたか。良かったです。 (困りました・・・)さんの困ったも解決出来ていると良いのですが・・・。
>重複で教えていただいた方法(式)の応用だと思いますが、 えっと・・・違います。(多分) [[20061018231154]]『同じ行データの検索』(ranmal) あれは、COUNTIF関数を使ったものですよね。 これはIF関数を使って単純に見比べています。 「あるセルと同じ順番に並んでいる別のセルとの内容を見比べたい」 とか言う時に便利だと思います。 「どこにあるか分からないけど、とにかくこれと同じものがあれば・・・」 とか言う時には向かないでしょう。 (もしかして >Y13=IF(COUNTIF($X$13:X13,X13)>1,"TRUE","FALSE") こっちの話だったのですかね?これなら似ていますが・・・・・)
(HANA)
>Y13=IF(COUNTIF($X$13:X13,X13)>1,"TRUE","FALSE") >こっちの話だったのですかね?これなら似ていますが・・・・・) そうです。この式の応用と考えてしまったのですが・・ ・ まだまだですね。私。(^_^.)
>「あるセルと同じ順番に並んでいる別のセルとの内容を見比べたい」 私の場合は両シートとも、列NO.は違っても、同列に同じ内容のデータが並んで いるので、結果が出せたのですね。
マクロを使わない場合は、元データが50位あって、シート内のどこにあるか 分からないけど、それと一致するものを探し出す・・なんてことは出来ませんよね。 ctrl+Fキーでの検索では1個ずつしか探せないし・・
仕事で使うデータは大抵並んでいるので便利に使うことが出来ています。 HANAさん、今後とも宜しく指導お願いいたします。(^_^)
(ranmal)
ははぁ、やっぱりIF関数の話でしたか。 どちらもIF関数を使っていますが 前の方法を知ったからその「応用」で今回の方法が分かるか・・・ と言うと、そうは言えないと思います。 IF関数は単に「この場合はA、そうでなければB」と 場合分けをするだけの関数で、重要なのは「この場合は」 の部分の式をどの様に設定するかだと思います。
どちらかというと「Y13=TRUE」と書いた部分 (条件付き書式を設定した時の数式です)の方が 今回の式を思いつくのに近かったのかもしれません。 今回の式の「この場合は」の部分を見てみると AND(COUNTA(A!M4,B!D2,A!N4,B!E2)>0,OR(A!M4=B!D2,A!N4=B!E2)) この部分ですが・・・・・COUNTA関数の方は単にエラー処理で 重要なのはOR関数で纏められた方です。 OR関数はご存じですよね?(今回は二つなので)「どちらかがTRUEならTRUE」です。 “どちらか”の片方を取り出すと「A!M4=B!D2」ですね。 「シートAのM4セルの値とシートBのD2セルの値は同じですか?」 を確認する式になっています。 「Y13=TRUE」とよく似てると思いませんか? こちらは「Y13セルの値はTRUEと言う値と同じですか?」ですよね。
応用を試みるか別の方法を探すのかの分かれ目は 「あ、この関数見たことがある」ではなく 「あ、この考え方つかえるかも」だと思います。 そのためには、式の考え方が何となくでも分かる事が必要でしょう。
と、言うことで >マクロを使わない場合は、元データが50位あって、シート内のどこにあるか >分からないけど、それと一致するものを探し出す・・なんてことは出来ませんよね。 この部分は、例えば「列は特定出来るがどの行に有るか分からない」と言うだけなら 「COUNTIF関数ってどんな関数?& 前回どうして同じ内容かどうかが分かったんだっけ?」 ってのが分かったら 「それと一致するもが存在するかどうかチェックする」 方法は案外簡単に見つかるかもしれません。
(HANA)
出来るということなのですね? 考えて見ます。 出来たら、必ず書き込みます(時間はかかるかもしれませんが・・)
(ranmal)
HANAさん、報告が大変遅くなりました。 HANAさんから課題を頂いたという認識で HANAさんの大事なコメントを読み流してしまい 自分の世界で考えすぎていました。 IF関数を使うということだけ、HANAさんのコメントにてINPUTされていたのですが なんとか自力で思い、MATCH関数、INDERECT関数、DGET関数、それから 馬鹿な方法でVLOOKUP関数の1列指定(苦し紛れです。情けない・・) ・・と色々挑戦して、全部・・方向が違うということに気づき、 HANAさんのことだから、今まで教えていただいたこと以外の方法での 課題は出さないと思いつき(今更ですが・・) 再度、上記コメントをじっくり、読み、分かりました。 出来たんですぅーーーーっ。すごく嬉しいです。
リスト(検索する元データ)がシート2のC1からC10にあるとして 検索対象がA列にある場合。
=IF(COUNTIF(Sheet2!$C$1:$C$10,A3)=1,"*","")
この式をしたまで式コピーして、あっという間に検索できました。 HANAさんをはじめ、今まで私に教えてくれた先生方などが この質問と、私の「時間はかかるかも・・」という答えを見て 歯がゆさと、じれったさと、何今まで聞いていたんだ(教わっていたんだ) と思っていたのだろうな・・と顔から火が出る思いです。
でも、大分回り道しましたが、悩んだ分、しっかり理解できた感じです。 そして、すご〜〜く、嬉しいです。(~o~)
思い込みが激しく違った方向に行きがちな私ですが これからも、ご指導宜しくお願いいたします。
(ranmal)
出来ましたか、良かったです。 一日待って定時(5時の事では無いですよ)迄に書込がなかったら 「思いが違うのかも」とサンプルを書こうと思ってました。
まずは >=IF(COUNTIF(Sheet2!$C$1:$C$10,A3)=1,"*","") ですが・・・・これってSheet2!$C$1:$C$10に重複があったら 困ったことになりませんか? もちろん「重複無し」と言う事なら十分使えると思いますが。
そして >MATCH関数、INDERECT関数、DGET関数、それから >馬鹿な方法でVLOOKUP関数の1列指定・・と色々挑戦して、 「INDERECT関数、DGET関数」この辺りはどの様に使うのか思いつかないのですが MATCH関数とVLOOKUP関数は(私はCOUNTIF関数よりなじみ深いので) 無駄に使ったりします・・・・。その無駄さ加減がこちらの過去ログ。 [[20060921231356]]『別シートにある同内容の行を削除したい』
>大分回り道しましたが、悩んだ分、しっかり理解できた感じです。 いくら時間がかかっても、それはranmalさんの時間ですから じっくりゆっくりのんびりやっても、ここの人は誰も文句なんて言わないでしょう。 ・・・心配はするかもしれませんが。 大分回り道した時に諦めた式も、もう一度見てみると どこに気が付けば諦めなくて済んだのか 分かるかもしれませんね。 (どちらもISERROR関数をプラスで使うことになりそうですが)
(HANA)
>サンプルを書こうと思ってました。 ありがとうございます。m(__)m
>ですが・・・・これってSheet2!$C$1:$C$10に重複があったら >困ったことになりませんか? >もちろん「重複無し」と言う事なら十分使えると思いますが。 私の場合、sheet2は元データ(重複無しのリスト)なので 大丈夫でした。
『別シートにある同内容の・・・』拝見しました。 そして、また教えていただきたいことが出来てしまいました。 2つあるのですが、 初歩的なことだと思うのですが、
>一度きりの作業なら >シート1のA列を挿入して作業列を作ります。 >A1=MATCH(B1&C1,Sheet2!$A$1:$A$1000&Sheet2!$B$1:$B$1000,FALSE) >を入力して、【Ctrl+Shift+Enter】 で確定して下さい。 >数式が { } で囲まれたら、必要行フィルドラッグ。
【Ctrl+Shift+Enter】で確定の技も知りませんでしたし、 何故、{ }で囲むのか。
もちろん、その操作をしないと全部エラーになり、 HANAさんの教えのとおりにやって、正しい結果が出ました。
もう一つは、 >Sheet1にA〜C列を挿入して >A1=D1&E1 >B1=Sheet2!A1&Sheet2!B1 >としたら >C1=VLOOKUP(A1,B:B,1,0) > (エラー値以外が重複有り) 範囲でB:Bというのと、列で1行を指定することです。 式を拝見したときと、実際に試して、このような式が成立するので 驚きました。
ただ、私は結果が出ませんでした。 結果を出すことが出来た、MATCH関数と同じデータで試してみたのですが 以下のようになってしまいます。何かが抜けているのかもしれません。
sheet1( C1=VLOOKUP(A1,B:B,1,0)の式を入れてコピーした結果)
A B C D E 1 122 101 #N/A 12 2 2 143 113 #N/A 14 3 3 164 126 #N/A 16 4 4 185 158 #N/A 18 5 5 206 1610 206 20 6 6 227 1821 227 22 7 7 248 1922 248 24 8 8 269 206 #N/A 26 9 9 2810 227 #N/A 28 10 10 3011 248 #N/A 30 11
sheet2
A B 1 10 1 2 11 3 3 12 6 4 15 8 5 16 10 6 18 21 7 19 22 8 20 6 9 22 7 10 24 8
宜しくお願いいたします。
(ranmal)
えっと、じっくり検証出来て居ないのですが・・・ どうなる事を予想してますかね? 重複が3件ではないのですか?
うっかりしていたのでデータによってはうまく行きません。 たとえば、A:B列が11:2 と 1:12 のものは、同じものとして扱われてしまいます。 問題がそこにある様ならA1&B1のところをA1&"-"&B1にかえてみてください。
うまく行きますかね? それとも、私が何か勘違いしてます?
(HANA)
HANAさん、ごめんなさい。 私の勘違いでした。(ーー;) 結果は上の表通り、ちゃんと出ていました。 「勘違い」という言葉で、今、私が勘違いしていることに気づきました。 またまた私の思い込み&勘違いで、ご迷惑おかけしてしまいました。 m(__)mm(__)mm(__)m
(ranmal)
勘違いでしたか。 良かったです。
続きは夜にします。
(HANA)
「続きは夜に・・・」なんて書きましたが 大したことがあるわけではなく・・・
>【Ctrl+Shift+Enter】で確定の技も知りませんでしたし、 >何故、{ }で囲むのか。 この数式は「配列数式」と呼ばれるもので「その様に確定するもの」なのです。 『エクセル 配列数式』として検索エンジンで検索して ヒットしたページを見るのが分かりやすいと思います。 おそらく『日経PC21 / エクセル(Excel)「配列数式」講座』 http://pc.nikkeibp.co.jp/pc21/special/hr/index.shtml このページが一番上に来ると思いますが・・・。
>A1=MATCH(B1&C1,Sheet2!$A$1:$A$1000&Sheet2!$B$1:$B$1000,FALSE) 「B1&C1」と言う組合せのものを「A1:A1000とB1:B1000」を上から順に 組み合わせていったものの中から完全一致で探しなさい 『上から順番だから、勝手に組み合わせて見比べてね』 とお願いしたりするときに、その様な式を作り 【Ctrl+Shift+Enter】で確定すると、エクセル君は 「そう言うことをご希望ですか」と、お願いを聞いてくれます。 だから、単にEnterだけだと「何いってんの?」って言われちゃいます。(涙)
(HANA)
HANAさん、よく分かりました。 毎回のことですが、分かりやすい説明ありがとうございます。 今回は、(困りました・・)さんの質問から始まり 様々なことを勉強させていただきました。ありがとうございす。 これからも宜しくお願いいたします。
(ranmal)
補足ですが・・・・ リンク先は「二つの並び順が同一のものが存在するかしないか」を見るものなので 今回の(困りました・・)さんの意図する「二つのどちらかが存在したら」 と言う場合には使えません。
また、双方並び順も含め合致したら「*」を表示させたい場合は ISERROR関数でエラー値かどうかを調べ、IF関数を使って TRUEの場合(エラー値となった場合)は空欄、 FALSEの場合(同じ並び順が有った場合)は「*」を表示 と言う数式に組み込む必要があります。
そうそう、 >【Ctrl+Shift+Enter】で確定の技も知りませんでしたし、 この部分ですが、「エクセルに関する【Ctrl+Shift+Enter】で確定」と言うことで、 グーグル等で『エクセル Ctrl+Shift+Enter』として検索してみると 「配列数式」と言う言葉にたどり着けたかもしれませんね。
(HANA)
>今回の(困りました・・)さんの意図する「二つのどちらかが存在したら」 >と言う場合には使えません。 はいm(__)m(困りました・・・)さんの質問を私が横取り(乗っ取り?)して、 途中から私の質問に 変えてしまいました。申し訳なく思っております。
>(どちらもISERROR関数をプラスで使うことになりそうですが) 前回、回答をいただいたときに、最後に記載されていたので 気になり、私なりに関数辞典やネットで調べてみました。 これを使うと色々応用するときに 便利な関数ですね。 とても勉強になりました。
>『エクセル Ctrl+Shift+Enter』として検索してみると >「配列数式」と言う言葉にたどり着けたかもしれませんね。 つい、甘えて、そのまま直に聞いてしまいました。(ーー;)
自分だけで考え悩んでいると、一つのことに固まって抜け出せなくなりますが 質問・回答をいただき、新たな関数に出会えたり、応用方法を学べたりで 感謝しています。 でも、基本的なことは自分で調べて勉強しなくては駄目ですよね。 気をつけたいと思います。(^_^)
(ranmal)
>>・・・と言う場合には使えません。 これは、「後でちらっとこのスレを見た人が思い違いをしないように」 と思って書いただけですので、ranmalさんは気にしないで下さい。
> つい、甘えて、そのまま直に聞いてしまいました。(ーー;) 「こうやったら分かったでしょ!!」 と言うことではなく、「検索ワードの選定の参考」です。 (・・・参考になればですが。)
>自分だけで考え悩んでいると、一つのことに固まって抜け出せなくなりますが 最初に思いついた方法って、なかなかあきらめがつかないものですよね。 To be or not to be, that's the question.
(HANA)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.