こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Excelで2シートに渡る参照、数式の方法がわからず困っています。

育児休暇明けのワーキングマザーです。
上司より、こういうことをやりたいからその数式を考えて表を作りなさいと・・・・次々にオーダーがきます。ちなみにExcel初心者です。
今困っているのは、以下のことです。

Sheet1のA列の企業名がSheet2のA列に重複してあり、且つSheet1のA列に対してB列に何らかのチェックがあった場合のみ、Sheet2のB列にチェックをつける。

具体的にはこんな感じ
<Sheet1>
A列 B列
A社 
B社
C社 電話
D社 メール
E社

<Sheet2>
A列 B列 
A社
B社
C社 ○ 
D社 ○
E社

色々調べてみたのですがわからず(涙)
宜しくお願いします。

投稿日時 - 2009-10-25 12:14:38

QNo.5394955

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(7)

ANo.7

既回答で、満足な結果を得られたということですが、まだ補足を読んでも、したいことの全貌がわかりません。
これだけはいえるので、考えてみてください。
疑問なのは(Sheet1の)A列に複数の同じ会社名があるときです。
エクセル関数では検索は
VLOOKUP
MATCH
関数しかなく、
これらは最初に現れる行しか探せません。
このことを前提で、質問が解けると思いますか?
ーーー
有無だけでよいなら
Sheet1のA列で
a
c
b
d
c電話
s
d
cメイル
の場合
A、B列以外のセルで
=IF(SUMPRODUCT((A2:A10="c")*(B2:B10<>"")*1)>0,"○","")
で○がつけられます。
意味は「C社の行で、B列に何か文字列があれば、○をつける」という意味です。(C社がA列に現れない=無くても、上記関数結果は空白が返り都合がよい。)
質問文章は、こういう風に書けば判りやすいのではないか?
上記例で電話、メイルのB列の値をDELETEして空白にして、様子の変化を見て納得してください。
ーー
さて質問はSheet2に結論を求められているが
例データ Sheet2
c○
d
B2セルは =IF(SUMPRODUCT((Sheet1!A2:A10=A2)*(Sheet1!B2:B10<>"")*1)>0,"○","")
B3に式を複写。
Sheet1のdの行に何か文字列を入れて(0=なし,1個,2個・の行に)、Sheet2のB3セルの○と空白の変化を納得してください。

投稿日時 - 2009-10-25 20:45:04

お礼

どうもありがとうございます。
そしてお礼が遅くなりまして申し訳ありません!

仕事中はセキュリティの関係でOKWaveさんを利用できず、帰宅後は育児と家事に追われているので中々できませんでした(涙)
(今は主人が子供をお風呂に入れてくれているのでその間に返信させていただいてます!)

でもこういった回答をいただけるとありがたいです。
どうしても自分で参考書やネットを検索して調べる時間がないのですが、そのままにしておけない性格で。

私はこちらに頼るしかなく。。。
でも頂いたものは少しづつ試して納得していってます。

まだまだ勉強不足なので少しづつでも自分でできるようにしていきたいです。
ご丁寧な回答どうもありがとうございました。

投稿日時 - 2009-10-27 20:11:18

ANo.6

既に解決済みと思いますが、ちょっと気になりましたのでm(__)m。

上司の方がやりたいことがどういったことか?という疑問がございまして(--)。

私がイメージしたのはsheet1が個別作業表?、sheet2が作業集計表?といった感じで「ある会社に対して行ったアクションをsheet1に入力」「その会社に対してアクションしたかどうかのチェックをsheet2で確認」なのではないかなぁと(でなければ別シートにする意味合いがよくわからないからです)。

とするとこういう事態が考えられると思うのです。

・sheet2にある企業は必ずsheet1にあるとは限らない
・sheet1の企業の並び順はsheet2と同じとは限らない
・sheet1の中で同一の企業名が複数回出てくる可能性がある

こういう条件が入ってくると式にも工夫が必要な場合がありますので・・・。これらの条件があるとした場合、sheet2のB1に入る式はこういうので良いかなぁと(sheet1の範囲は1~20までとしています)。

=IF(SUMPRODUCT((Sheet1!$A$1:$A$20=Sheet2!A1)*(Sheet1!$B$1:$B$20<>""))<>0,"○","")

式の説明は「SUMPRODUCTでsheet1のA列の中で、sheet2のA1と同じ行を探し、その行のB列が空白でない数をカウント」「その数が0でなければ○を表示し、0ならブランク」という感じ・・・だと思います(あまり自信がありません><)。

また先に挙げたようなことをしたいのであれば、期間で集計、項目(メール、電話の回数etc)で集計といったことになってきそうな気がします。

ご参考までm(__)m。

投稿日時 - 2009-10-25 18:19:21

お礼

ありがとうございます!
こちらの数式でもできました!

また、

>・sheet2にある企業は必ずsheet1にあるとは限らない
>・sheet1の企業の並び順はsheet2と同じとは限らない
>・sheet1の中で同一の企業名が複数回出てくる可能性がある

まさにその通りでございます。

実はSheet1は個別集計表なのですが、Sheet2は新たにピックアップした企業の一覧表でした。
しかしながら、新たにピックアップした企業はすでにアプローチ済みのもの、企業が重複しているものもあり、Sheet2では本当の新規の企業をピックアップするためのものでした。

説明がへたくそですいません。。。
とても助かりました!
ありがとうございました。

また、メール、電話の回数で集計・・・ということにもいずれなってくるかもしれません。

投稿日時 - 2009-10-25 20:40:07

ANo.5

=IF(Sheet1!B1>0,"O","")
でも同じ結果です。
参考URL
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/if_is.htm

ついでに
このようの作業の場合、複数のSheetを同時に開いて作業すると楽ですよ。
「ウィンドウ」から「新しいウィンドウを開く」さらに「ウィンドウ」から「整列」
http://pc.nikkeibp.co.jp/article/NPC/20060216/229590/?ST=print_leaf&P=1
エクセル2007なら
http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-window.html#sheet

蛇足
社内に相談できる人を見つけましょう。
きっといるはずです。
(総務に聞いてみるとか)
人柄の良い人なら(我々のように)喜んで教えてくれます。

投稿日時 - 2009-10-25 13:37:17

お礼

ありがとうございます!
「整列」の方法知りませんでした!

・・・というか知らないことだらけでお恥ずかしい限りです。。。
これから使わせて頂きます。

社内はみんな自分の仕事で忙しく、・・・というか詳しい人はその上司のみといった感じ(涙)
ですので非常に助かっております。
画像添付までしていただきありがとうございました。

投稿日時 - 2009-10-25 20:16:51

ANo.4

No.3です!
たびたびごめんなさい。

前回の数式で余計なものが付いていましたので
少し訂正させてください。
(前回の数式でも問題はないと思いますが・・・)

Sheet2のB2セルを
=IF(OR(A2="",COUNTIF(Sheet1!A:A,A2)=0),"",IF(VLOOKUP(A2,Sheet1!A:B,2,0)<>"","○",""))

としてみてください。

どうも何度も失礼しました。m(__)m

投稿日時 - 2009-10-25 13:01:54

お礼

できました!!
まさにコレがやりたかったのです!!
一つ一つの関数の意味は現状ではわかりませんが、ひとつひとつこれから勉強していかなければって感じですね!

画像添付までしていただき、本当に助かりました。
ありがとうございました!!

投稿日時 - 2009-10-25 13:19:50

ANo.3

こんにちは!
参考になるかどうか判りませんが・・・

一例です。

↓の画像のSheet2のB2セルに
=IF(A2="","",IF(OR(A2="",COUNTIF(Sheet1!$A:$A,A2)=0),"",IF(VLOOKUP(A2,Sheet1!$A:$B,2,0)<>"","○","")))

という数式を入れ、オートフィルで下へコピーすると
画像のような感じになります。

これで、Sheet1・Sheet2に会社名の重複があり、なおかつSheet1のB列が空白でないものに「○」が表示されます。

こんなんで良かったのですかね?

以上、お役に立てれば幸いですが、
的外れであったり、他に良い方法があれば読み流してくださいね。

いずれにしても無理せず頑張ってくださいね。m(__)m

投稿日時 - 2009-10-25 12:44:34

今、シート1のA1にA社が有るとします。
また、シート2はシート1と同じ構成になっているものとします。
このとき、シート2のB1セルに
=IF(Sheet1!B1<>"","○","")
と入力し、下までコピーすればOKでしょう。

投稿日時 - 2009-10-25 12:31:57

補足

ありがとうございます!
ちょっと私の書き方が悪かったようで、きちんとお伝えできなかったようです。

Sheet2のA列は同じ企業名が並んでいると言うわけではなく、
例えば、

A列 B列 
A社
あ社
B社
か社
C社  
D社
さ社
E社

という風になっており、2シート間で重複、且つSheet1のB列に何らかの記載があったもののみ●をつけるという意味でした!

A列 B列 
A社
あ社
B社
か社
C社 ○  
D社 ○
さ社
E社

うまくお伝えできずにすいませんでした!

投稿日時 - 2009-10-25 13:11:48

お礼

しかしながら、私はExcel初心者、教えていただいたことも今後の参考にさせていただければと思っています!
本当にありがとうございました。

投稿日時 - 2009-10-25 13:22:14

ANo.1

逆の発想をしてみました。

=IF(sheet1!B3="","","○")

要するに、""は、何も入力されていないの意味なので、
sheet1のB列に何も入力されていなければ、何も表示しない、そうでない(要するに何か入力されている)のであれば、○を書く。という意味です。

これが一番簡単ですかね

投稿日時 - 2009-10-25 12:30:31

補足

ありがとうございます!
私の書き方が悪かったようで、きちんとお伝えできなかったようでした。

Sheet2のA列は同じ企業名が並んでいると言うわけではなく、
例えば、

A列 B列 
A社
あ社
B社
か社
C社  
D社
さ社
E社

という風になっており、2シート間で重複、且つSheet1のB列に何らかの記載があったもののみ●をつけるという意味でした!

A列 B列 
A社
あ社
B社
か社
C社 ○  
D社 ○
さ社
E社

うまくお伝えできずにすいませんでした!

投稿日時 - 2009-10-25 13:16:19

お礼

でも何せExcel初心者なので、教えていただいたことも非常に役に立ちました。
ありがとうございました。

投稿日時 - 2009-10-25 13:20:55

あなたにオススメの質問