• ベストアンサー

エクセル IF関数 条件を満たす行に印をつける

A1:J30までにランダムな数値が入力されている表があります。M1:N4には検索値を入力できる箇所があり、条件に該当する行があればK列に○を付ける、ということがしたいです。その条件は、 (1)M1かN1に該当する (2)M2かN2に該当する (3)M3かN3かM4かN4に該当する この3条件のすべてを満たす行があればK列に○です。 いろいろ調べて、IF関数とsumproductを組み合わせてやってみたのですが、正しい結果にならずお手上げ状態です。(ちなみにこれ↓長すぎなのもネック。。。) =IF(AND(SUMPRODUCT((A1:J1=$M$1)+(A1:J1=$N$1))>=0,SUMPRODUCT((A1:J1=$M$2)+(A1:J1=$N$2))>=0,SUMPRODUCT((A1:J1=$M$3)+(A1:J1=$N$3)+(A1:J1=$M$4)+(A1:J1=$N$4)>=0)),"○","") IF関数でなくてもできれば何でも良いので、教えてください。 よろしくお願いいたします。

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

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

K1セルには次の式を入力して下方にドラッグコピーします。 =IF(AND((COUNTIF(A1:J1,M$1)+COUNTIF(A1:J1,N$1))>0,(COUNTIF(A1:J1,M$2)+COUNTIF(A1:J1,N$2))>0,(COUNTIF(A1:J1,M$3)+COUNTIF(A1:J1,N$3)+COUNTIF(A1:J1,M$4)+COUNTIF(A1:J1,N$4))>0),"○","")

honeybeans
質問者

お礼

できました!早々にご対応いただきありがとうございます。

その他の回答 (1)

noname#204879
noname#204879
回答No.2

=IF((COUNTIF(A1:J1,M$1)+COUNTIF(A1:J1,N$1))*(COUNTIF(A1:J1,M$2)+COUNTIF(A1:J1,N$2))*(COUNTIF(A1:J1,M$3)+COUNTIF(A1:J1,N$3)+COUNTIF(A1:J1,M$4)+COUNTIF(A1:J1,N$4)),"○","")

honeybeans
質問者

お礼

こちらでも可能なんですね。ありがとうございました。

関連するQ&A

  • エクセルのIF関数について

    エクセルのIF関数について質問をさせて頂きます。 現在、下記のような条件で抽出できる式を考えているのですが、 中々思うような式が思い浮かびません。 例えば、     A列  B列  C列  D列 1行目  111 2行目  222 3行目  333 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999 上記のようなシートがあったとして、     A列  B列  C列  D列 1行目  111       999 2行目  222       333 3行目  333   ○   123   × 4行目  444 5行目  555 6行目  666 7行目  777 8行目  888 9行目  999   ○ 上記のように、例として C列の1行目に「999」と入力した場合、A列の9行目に「999」の数字があるので、その横のB列に「○」 C列の2行目に「333」と入力した場合、A列の3行目に「333」の数字があるので、その横のB列に「○」 C列の3行目に「123」と入力した場合、どこにも該当番号がないので、入力したC列の横、即ちD列の3行目に「×」を表示 要は、A列のどこかに該当数字があった場合にはその数字の横(B列)に「○」、どこにも該当数字が無い時には、入力した数字の横、D列に「×」を表示するような数式を考えています。 IF関数を使えばできるような気がするのですが、色々と試してみても中々うまくいきません。 下手な説明で分かり辛いかもしれませんが、どなたかご存知の方がいましたら、ご教授の程頂ければ幸いです。 どうぞ宜しくお願い致します。

  • 【エクセル】if関数 or条件に関して

    エクセル初心者です。 A列を検索条件とし B列から検索 一つでも該当がある場合にはCにチェックを入れる (もしくは該当セルの色を変える等) という関数を作りたいと思っています。 IF関数を使って試しに作ってみました。 =IF(OR($A$1=$B$1:$B$26,$A$2=$B$1:$B$26,$A$3=$B$1:$B$26),"○","×") ※結果は画像を参照お願い致します。 A列の(a,f,m)という文字列を条件としてB列を検索し、一つでも該当する場合には C列に○を、該当しない場合は×をつける。 検索条件を(A1,A2,A3)と3つだけの場合はこちらで対応出来るのですが、 本来やりたいものは、 (A列)検索条件が100個以上、 (B列)検索をかける対象も1000個以上といったものをやりたいので (A1,A2,A3・・)を手打ちだとものすごく時間がかかってしまいます。 なので、文字列の条件を簡単に範囲指定(複数指定)出来るような書き方があれば 教えて頂きたいと思い質問をさせて頂きました。 また、以下のIF文を最初に思いついたのですが、 こちらは書き方が間違っているようで、「!」が出てしまいました。 =IF($A$1:$A$3=$B$1:$B$26,"○","×") 自分ではなにがいけないのかがわからなかったので、 出来ればこちらの関数の矛盾点も指摘して頂きたいです。 関数の単語だけでも、なにかヒントを頂きたいと思っています。 よろしくお願いします。

  • SUMPRODUCT関数を使った条件分岐ができない

    エクセル2010を使っておりますが、IFとSUMPRODUCTを使った関数のことで伺います。 旅費の精算をしておりまして、I列に氏名、J列に出発日、K列に到着日が入っております。 (1行と1つの出張について入力してあります) 同じ氏名で、他の出張と出発日又は到着日が一部、又は全部重なる場合は「重複」、帰ってきた翌日から出張の場合は「連日」、両方の条件を満たすときは「重複、連日」と表示されるようにしたく、以下の関数式を組みました。 しかし、「重複、連日」と「連日」がうまく表示されません。 連日に関しては、I列に氏名が複数入力されていれば表示されてしまいます。 どこをどう直せば、意図するように表示されるのか、教えていただけないでしょうか。 長文の関数で大変申し訳ないのですが、よろしくお願いいたします。 =IF(AND(SUMPRODUCT((I$6:INDEX(I:I,1000)=I6)*(J$6:INDEX(J:J,1000)<=K6)*(K$6:INDEX(K:K,1000)>=J6))>1,OR(SUMPRODUCT((I$6:INDEX(I:I,1000)=I6)*(K$6:INDEX(K:K,1000)=J6-1))>=1,SUMPRODUCT((I$6:INDEX(I:I,1200)=I6),(J$6:INDEX(J:J,1200)>=K6+1))>=1)),"重複、連日",IF(SUMPRODUCT((I$6:INDEX(I:I,1000)=I6)*(J$6:INDEX(J:J,1000)<=K6)*(K$6:INDEX(K:K,1000)>=J6))>1,"重複",IF(SUMPRODUCT((I$6:INDEX(I:I,1000)=I6)*OR((K$6:INDEX(K:K,1000)=J6-1),(J$6:INDEX(J:J,1000)>=K6+1)))>1,"連日","")))

  • 文字列の順番を指定して条件づける関数 エクセル

    添付ファイルを参照いただきたいのですが、 アルファベットのS,M,J,Nで構成される3つの文字列があります。 (別シートにあるデータからif関数で条件に合致したものにそれぞれの3つの文字列が入っています。) 現状として1つの行に2つ以上文字列があったら★をつけているのですが、ここから、かつ、文字列の順番がバラバラのもののみ抽出したいです。 例えば、黄色ハイライトが該当します。1つ目の文字列がSとM,2つ目がMとJ、3つめがJとSなので、3つとも順番が違うので該当。 例えば、緑が該当しません。1つ目と3つめがMとSで同じ。 関数で抽出するにはどうすればいいでしょうか?

  • MSエクセルのif関数にて

    MSエクセルのif関数にて 業務で、エクセルのifを使った関数を利用し処理しようと思っています。 K列にαまたはβが入力されており、 L列に日付が"2008-06-07"という形で入力されているデータ群があります。 そこで、処理したい内容は以下です。 ・もし、K=αなら、L列の日付に1年プラスしてM列に入力 例)2008-06-07 → 2009-06-07 ・K=βなら、L列の日付に2年プラスしてM列に入力 例)2008-06-07 → 2010-06-07 このようにif関数を作るには、M列にどのような値を入力したら良いでしょうか。 ご存知の方、ご教示下さい。宜しくお願い致します。

  • IF関数と並べ替え

    エクセル2000です。 =IF(M2=M3,"○","×") =IF(M3=M4,"○","×") =IF(M4=M5,"○","×") =IF(M4=M5,"○","×") IF関数をつかってある列に上のような式を入れています。 で、そのままその列を並べ替えしても○と×で並べ替えすることはできないと思うのですがこれを可能にする方法を教えてください。形式を選択して値貼付けをして並べ替えるという方法はしっているのですが、できれば関数で処理したいと思っています。どなかたご教授ください。

  • EXCEL 2003で条件に合った合計を求めたい

    ______A ____B____ C_____D 1___111___ 1 ___10___ 60 2___111___ 2 ___10 3___222___ 2 ___10 4___333___ 1 ___10 5___333___ 2 ___10 6___333___ 3 ___10 7___444___ 1 ___10 8___444___ 3 ___10 9___555___ 1 ___10 Excel 2003環境において、上記A1:C9を対象に関数で下記条件を元に数式をD1に入力して値を求めたいです。 条件: A列の同じ値のセルを一つのグループとし、かつその中で、B列で1から始まる連番となっているグループを対象にC列のセルを合計する。 上記のセル範囲で条件に合う行は1,2,4,5,6,9行目で答えは60になります。 SUMPRODUCT関数やIF関数を併用してみましたが、うまく作ることができませんでした。 なんとか作業列やVBAを用いずに一つの数式で済ませたいです。 よろしくお願いします。

  • IF関数? エクセルでこんなことをしたいです。

    エクセルで、例えばA列にたくさんの品物の品番が入力されているとします。 B列に、A列の品番が「V」で始まっていたら「1」、「Z」で始まっていたら「2」・・・というように条件をつけてIF関数を設定したいのですが、IF関数は、「○○で始まったら□□」という設定はできないのでしたか? できないとしたら、他に方法はないでしょうか。 パソコンは苦手な人から聞かれているので、難しくない方法がいいのですが・・・。 よろしくお願いします。

  • 行列の行の入換え

    | -1 -1 -2 -1 10 | | -1 -2 -1 10 -1 | | -2 -1 10 -1 -1 | | -1 10 -1 -1 -2 | | 10 -1 -1 -2 -1 | この行列を次の順序で並び替えたいのですが 1.第1列にある要素の中で絶対値の最大値がある行を探し,その行と第1行を入れ換える. 2.第2列にある要素の中で絶対値の最大値がある行を第2行以下から探し,その行と第2行を入れ換える. 3.これを左上から右下へ順次移動して,行の入れ換えを行う. #include<stdio.h> #include<math.h> #define N 5 #define M 5 int main(){ float a[N][M]={{-1.0,-1.0,-2.0,-1.0,10.0},{-1.0,-2.0,-1.0,10.0,-1.0},{-2.0,-1.0,10.0,-1.0,-1.0}, {-1.0,10.0,-1.0,-1.0,-2.0},{10.0,-1.0,-1.0,-2.0,-1.0}}; float nmax; int i,j,k=0,s,imax; for(j=0; j<M; j++){ nmax = a[0][j]; imax = 0; for(i=1; i<N; i++){ if(fabs(nmax) < fabs(a[i][j])){ nmax = a[i][j]; imax = i; } } for(j=0; j<M; j++){ s=a[k][j]; a[k][j]=a[imax][j]; a[imax][j]=s; } k++; } for(i=0; i<N; i++){ for(j=0; j<M; j++){ printf("%5.1f ",a[i][j]); } printf("\n"); } return(0); } このように作成したのですが、1行目と5行目しかいれかわりません。 なぜでしょうか??

  • IF関数について

    IF関数について A列のセルに住所が入力されていて、「中野区」という文字列が含まれているときに「○」そうでない場合は「-」をB列セルに表示させる方法で B列セルに、 =IF(COUNTIF(A1,"*中野区*"),"○","-") を入力すれば良いことがわかりました。 この条件に加えて、A列のセルが空白の場合上の行を参照するという条件を加えたいと思います。 例A3のセルが空白の場合A2を参照しB3に表示させる。 因みに、A2も空白の場合A1を参照する。 って感じにしたいです。 宜しく御願いします。

専門家に質問してみよう