• ベストアンサー

【EXCEL】条件によって特定のセルの値を探し、他ファイルの同じ値のある行に反映させる

セルK4がTRUEとなると、 あるセル(E12)がその4つ左のセル(A12)に表示されている 番号を探し、他ファイルにある同じ番号の4つ右のセルに○がつく・・・ というようにしたいのですが、関数を駆使してできますでしょうか? イメージはファイルBBのE12に  =IF($K$4=TRUE,~ と入れ、 TRUEになったらファイルAAのE9(同じ301番)に○がつく感じです >_< どなたか関数に詳しい方、アドバイスをお願いいたします!! ちなみに下記のような状態です。 【ファイルAA(Sheet1)】     A      B      C       D     E      8   番号   発行日   期限    氏名    状況 9   301   10/5     4/3   ●●     10  302   11/5    5/4   ○○    :    :     :      :     :     : 【ファイルBB】               (Sheet1の表)                A      B      C     D     E       11   番号   発行日   期限   氏名   状況 12    301   10/5     4/3    ●●     13   302     11/5    5/4    ○○    :     :     :       :     :      :

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.5

ファイルBBのシート1のE12セルには次の式を入力して下方にオートフィルドラッグするとします。 =IF($K$4=TRUE,A9,"") この式ではE列にTRUEの時はA列の番号が表示されることになります。 そこでファイルAAのシート1のE9セルには次の式を入力して下方にオートフィルドラッグすればよいでしょう。 =IF(COUNTIF([【BB】.xlsx]Sheet1!$E:$E,A9)>0,"○","") だだし、上式で[【BB】.xlsx]の書き方が正しいのかどうか簡単な試験で確認することが必要でしょう。

yu332
質問者

お礼

回答して下さり、ありがとうございます。 すごく分かりやすく説明してくださったので、すぐ手順通りやってみました! ただ入力のところまではスムーズに行ったのですが、 チェックボックスをオン(K4をTRUE)にすると、循環参照の警告が出てしまいます。。。なぜ・・・ でもやればやるほどいろんな方法があって すごく勉強になるので(そしてもう少しでできそうな気がしてくるので)、 もうちょっと粘ってみようと思います>_< ありがとうございます!

すると、全ての回答が全文表示されます。

その他の回答 (6)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.7

>ちなみにE12 =IF($K$4=TRUE,"○","") >AAのE9 =IF(VLOOKUP(A9,[【BB】.xlsx]Sheet1!A:E,5,0)=○,"○","") 上記の条件ならどこにも循環参照になっている部分はないように思います。 もし循環参照になっているなら、数式のエラーをチェック、あるいは参照元のチェックなどで実際に循環参照しているセルを確認してみてください。 エクセルのバージョンによって使用できる関数や操作法、メニュー項目などが異なりますので、質問するときはバージョンも併記するようにしましょう。

yu332
質問者

お礼

ご回答ありがとうございます! 確認してみます。 アドバイス本当にありがとうございました! すごく参考になりました。 また何かありましたらぜひ宜しくお願いします!

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.6

>AAのE9 >=IF(VLOOKUP(A9,[【BB】.xlsx]Sheet1!A:E,5,0)=[【BB】.xlsx]Sheet1!$E$12,"○","") >でやると、循環参照が含まれている為という警告がでてしまいます・・・ [【BB】.xlsx]Sheet1!$E$1の値は○なのではないのですか? このセルに○が返る場合は、AAセルのE列にも○を表示するなら、この部分は当然数式ではなく(これが循環参照の原因です)"○"を参照することになります(そのためにこのセルに入力する式を確認したわけです)。 念のため、数式を説明すると、AAのA9セルの値をBBのA列から検索し、その行のF列の値が○ならば○をつけるということになります。

yu332
質問者

補足

たびたびありがとうございます! 数式のご説明ありがとうございます。助かります* なるほどっ!と思い、さっそくやってみたのですが、 またどうも循環参照の警告が消えず・・・です。 ちなみにE12 =IF($K$4=TRUE,"○","") AAのE9 =IF(VLOOKUP(A9,[【BB】.xlsx]Sheet1!A:E,5,0)=○,"○","") としてみたのですが、まだ何かおかしいのでしょうか;_; 知識のレベルが低く、本当に申し訳ございません。。 どうか何卒宜しくお願いします!

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.4

この質問は「特定の」とか抽象的な質問の書き方で判りにくい。 具体例に徹して質問し、こうだからこうで、その後こうしたいとかけないのか。質問の具体例と挙げた例も乖離していて役立たないのでは。 その1例の場合の回答に接した後、自分の場合に当てはめるのは、質問者の仕事だと思う。(それが出来ないレベルなら、このコーナーに質問しても仕様が無いとおもう。) ーーー 在る値のセルを、シート上で探すのは関数では出来ない。 MATCH関数があるが、複数列を指定できない。(WEBででもMATCH関数を勉強のこと。)VKOOKUP関数なども同じ。 だから (1)VBAでやる (2)ユーザー定義関数を使う(実質VBAをそこで使う) をしないと、(>関数を駆使して・・)質問はのっけから不可能のはず。

yu332
質問者

お礼

回答ありがとうございます。 分かりにくくて大変申し訳ございません・・・ >在る値のセルを、シート上で探すのは関数では出来ない。 >MATCH関数があるが、複数列を指定できない。 ↑大変ためになりました。MATCH関数、VLOOKUP関数ともに勉強させていただきます! そして、VBAも勉強します。 ご意見ありがとうございました。 また宜しくお願いします!

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

>でもまずはBBのE12が○に代わって、それが同じ番号のあるAAのE12に 反映されるようにしたかったので。。。 ご質問内容を整理すると、単純にBBのE12が○の場合は、それと同じ番号のAAのE列のセルに○を表示したいということですよね。 その場合は、すでに回答したVLOOKUP関数でできると思うのですが・・・ ちなみに、このようなケースでは、データの更新などを考慮すると、ブックを分けずに同一ブックの別シートで作業するほうが安全で確実だと思われます。

yu332
質問者

補足

何度も回答ありがとうございます!! やりたいことはその通りです。 ただ、まだ残念ながらできていません。。 今、先ほど教えていただいたVLOOKUP関数にあてはめて やってみたのですが AAのE9 =IF(VLOOKUP(A9,[【BB】.xlsx]Sheet1!A:E,5,0)=[【BB】.xlsx]Sheet1!$E$12,"○","") でやると、循環参照が含まれている為という警告がでてしまいます・・・ 何か間違っているのでしょうか?;_;

すると、全ての回答が全文表示されます。
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

>イメージはファイルBBのE12に  =IF($K$4=TRUE,~ と入れ、 >TRUEになったらファイルAAのE9(同じ301番)に○がつく感じです >_< 上記のIF関数の数式の意味が分かりません。 具体的に、E12セルにはどのような値が返るのでしょうか? 実際にE12セルに入力されている数式を提示されたほうが、的確な回答が得られると思います。 一般的に回答すると、以下のような数式になります。 =IF(VLOOKUP(A9,BBファイルのA:E,5,0)=BBのE12セルの値,"○","")

yu332
質問者

補足

回答ありがとうございます! 説明不足で申し訳ございません。 E12 =IF($K$4=TRUE,~ これの説明なのですが、~の所が何の関数を使ったらいいか分からなかったので書けませんでした・・・すみません。 ※ちなみにK4はチェックボックスとリンクし、TRUEかFALSHになるようになってます。 【BBのE12】 「TRUEだったら、A12の番号が何か探し、その番号(もしくは○)を表示。FALSEの場合は空白のまま」 =IF($K$4=TRUE,A12,"")         ↓ 【AAのE9】 「そのA12の番号と同じ番号のあるセル(上だとAAのA9)を探し、 AAのE9にも○を表示させる」 =IF(MATCH([【BB】.xlsx]Sheet1!$E$12,A9:A130,0,"○","") としたいのですが、ない知識を絞り出してたてた上記式ではできませんでした・・・ 何か他にいい方法はありますでしょうか?? 宜しくお願いしますm_ _m

すると、全ての回答が全文表示されます。
noname#101303
noname#101303
回答No.1

関数を使用して、AAのE9を変更させるなら、関数自体をAAのE9に書かないといけません。 関数自体に、他のセルを変更させる機能は有りません。 VBAでやるか、AAとBBを同時に立ち上げて、AAのE列に関数を入れましょう。

yu332
質問者

補足

回答ありがとうございます。 はい、AAのE9に関数を書かないといけないのは十分承知です>_< でもまずはBBのE12が○に代わって、それが同じ番号のあるAAのE12に 反映されるようにしたかったので。。。 (そしてAAのE9に書いたらいい関数が分からなかったというのが本音です…) 無知ですみません(;_;) セル同士を =+ でリンクさせると、ファイルBBの情報はどんどん新しいものに代わって表示されていくので、うまくいきませんでした。 そこで番号を基準に反映させたい!と思ったのですが、何かいい方法はありますでしょうか。。?

すると、全ての回答が全文表示されます。

関連するQ&A