• ベストアンサー

エクセル 該当したら隣に○

エクセルで日報を作っています。 今日、何の仕事をしたか?みたいな表なのですが…。 B列は数字。 C列は項目。 D列は今日した仕事をCの項目から選びその隣の数字を記入。 E列はその詳細について書く そして、A列はDで選ばれた数字のBの数字の隣に丸をつける          見たいな感じです。 言葉だけではわかりづらいので、ちょっとした例を。 A   B   C   D    E     1  掃除   2   ○○さんから△△について電話が来る  ○  2  電話     3  面談     4  会議 実際はもっとちゃんとしたものですが カンジとしたらこんなものです。 で、A列の○をDに数字を記入した時に自動につくようにしたいのですがどうしたらよいでしょうか? 自分なりに考えてIF関数を使い =IF(D1:D4=1,"○","")とやってみたのですが これだとD1に『1』がくればA1に○が付くのですが D1以外のD2~D4に『1』がきた時はA1に○は付いてくれませんでした。『D1:D4=1』と、D1以外にD2~D4も指定しているのになぜダメなのでしょうか? ダメな理由と、どうするのが正解なのかのあわせて2つのご返答をお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>A列の○をDに数字を記入した時に自動につくようにしたいのです、 が表現があいまい。 どちらが先に入力されるのか? 多分言いたいことは 「Dに数字を記入した時に、B列該当番号行のA列に○を入れる」とすべきでは。 これはVBAでは簡単だが、関数では、面倒。B列の1,2,3,4 のA列の行すべてに式を入れないとならない。 D列に2つ以上入れられるとするとさらに面倒。 ーー 例データ A列  B列      D列 ○ 1 2 <-入力 ○ 2 1 <-入力 3 4 A1に =IF(ISERROR(MATCH(B1,$D$1:$D$4,0)),"","○") を入れて下方向に式を複写 2,1の順序に係わらず、また1,2,3,4の複数記入に係わらず ○が着きます。

shakashak2005
質問者

お礼

お礼が遅くなり申し訳ありません。 また、説明が悪く申し訳ありません。 imogasoさんが捉えてくださったことを言いたかったのです。 おかげで自動で丸をつけることができました。 ありがとうございました。

その他の回答 (2)

回答No.3

要するに、D列とE列を使って今日した仕事をガ~ッと列記して、1回 でも電話を取ってればA2に○、誰かと喋ったらA3に○と。 質問の=if(D1:D4=1,...がなぜダメかというと、判定式のD1:D4=1は配 列であって、質問者が空想したようなor条件での判定ではないから。 D1が1のとき、D1:D4=1の結果は{TRUE;FALSE;FALSE;FALSE}となる。D1 が2でD2が1なら、{FALSE;TRUE;FALSE;FALSE}になる。同じ形の配列が 並んでると、Excelは2行目には配列の2行目の要素、3行目には配列の 3行目の要素を返す仕様になってるので、質問者の予想しなかったよ うな挙動を示す。 で、こういう場合の正解は、match関数。match関数は範囲内で検索値 を探し、見つかれば最初に見つけた要素番号、見つからなければ#N/A エラーを返す。というわけで、A1は =if(isna(match(B1,C:C,0)),"","○") 以下A4までドラッグね。面倒なことは何もない。

shakashak2005
質問者

お礼

お礼が遅くなり申し訳ありません。 私が考えたやり方がどうしてダメなのかがよく分かりました。 match関数は勉強不足で存在も知りませんでした…。 もっともっと勉強しなければならないなぁと改めて実感。 今回は回答してくださった3名ともとてもわかりやすく そして各々全く違う回答を下さり、全員の方に良回答20ポイントを付けたいのですが システム上出来ずすごく悔しいです。 なので早いもん順に付けさせて頂こうと思います。 とても的確で分かり易い回答を下さったのに申し訳ありません…。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

D列に、何個2があってもA2に○を入れるなら A1==IF(COUNTIF($D$1:$D$4,B1)>=1,"○","") でも、これって、行為の順番が必要でないならD列はいらないのでは? 単純に電話があれば、E2に記入するとちに丸がつくなら簡単。 それとも、D列は4行より多くても良いとか?

shakashak2005
質問者

お礼

お礼が遅くなり申し訳ありません。 Cに書かれている項目は、毎日全て行うわけではなく そして、項目によっては1日に何件も行うものなので (例えば1日に掃除1回、電話は5件、面談・会議は無しとか) このような様式になっていて、Aで今日は何の項目がなされているのかが見てすぐにわかって Dはやったもの順に並んでいて、同じ項目に関して何件も記入されている場合があるという感じになっています。 =IF(COUNTIF($D$1:$D$4,B1)>=1,"○","") は、エクセル勉強不足でmatch関数を知らなかった私にもよく分かりました。 なるほどという感じです。 回答ありがとうございました。

関連するQ&A