• ベストアンサー

if関数について

if関数についてどなたか教えてください。 ある二つの名簿があって、二つの名簿を照合して名寄せをしたいのですが、たとえば、A列の1行目から10行目まで、同じくB列の1行目から10行目まで氏名が入っているとします。A列とB列に同じ名前が入っていれば、C列に○印をつけるように関数を設定したいのです。自分なりに考えて、次のようにif関数を設定しました。・・・がうまく表示されません。エラーは出ませんので、関数としては成り立っていると思うのですが、○印が表示されません。どなたか間違いを指摘いただけませんでしょうか? C1のセルに次の関数を設定して、C10までコピーをしました。 if(A1=$B$1:$B$10,”○”,””) よろしくお願いいたします。

  • jiijii
  • お礼率88% (132/150)

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

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

(1)こだわってif(A1=$B$1:$B$10,の部分を生かすとすれば =IF(SUM(IF(A1=$B$1:$B$10,1,0))>0,"○","") といれてSHIFT+CTRL+ENTERを押す。 その後式を下方向に複写する。 配列数式になる。 (2)MATCH関数の場合は =IF(ISERROR(MATCH(A1,$B$1:$B$10,0)),"","○") その後式を下方向に複写する。 (3)VLOOKUP関数の場合は =IF(ISERROR(VLOOKUP(A1,$B$1:$B$10,1,FALSE)),"","○") その後式を下方向に複写する。

jiijii
質問者

お礼

ありがとうございました。 No.2の方からも配列式でやったほうがいいということで、その方法をとりました。出来ました。 ただ、おっしゃる他のの方法も試してみたんですが、結果が、微妙に違うんです。いろいろ研究してみます。ご親切に感謝いたします。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

IFの条件として、セル範囲を指定することは、通常望む動作になりません、そのような時は配列式として入力します。(SHIFT+CTRL+ENTERで入力) 今回の場合は、配列式にしなくても、 (他の方法もありますが) 以下の様な方法でもできます。 =IF(COUNTIF($B$1:$B$10,A1)>0,"○","") 意味:B1~B10でA1に一致するものを数えて1以上になる時○

jiijii
質問者

お礼

ありがとうございます。 配列式でやってみましたら出来ました。

  • mendokusa
  • ベストアンサー率13% (359/2726)
回答No.1

MATCHとかLOOKUPの方がいいんじゃないですか

関連するQ&A

  • Excel COUNTA関数について

    先日、名簿の照合をする関数について質問をしましたら、いろいろ回答をいただきまして、無事作成することが出来ました。 内容は、A列とB列の名簿で、同じ名前があればC列の該当欄にに○印をつける・・・というものです。そこでC列の最後に○印の数を計算する関数で、COUNTA関数を使って集計をするように設定したんですが、C列には前述の関数が貼り付けられているため、それもカウントされているようで、正確な集計が出来ません。貼り付けられている関数はカウントしないで○印だけをカウントすることが出来るのでしょうか。

  • エクセル関数 IF関数で出来ませんかね

    エクセル関数 IF関数で列への書式設定をしているのですが、私が考えていることが出来ません。お力をお貸ししてください。   A列    B列    C列  請求書   領収書  備考欄 1 ○  2 不要         TEL 3 ○ 4 5 不要         TEL A列はユ-ザ-定義で[=1]"○";"不要"としており、問題はC列へのA列での「不要」となった場合にTEL(=A1とし、セルの書式設定[=1]"":"TEL")でコピ-で自動的に表示させられるのですがA列へのデ-タが莫大に多いもので、IF関数で試行錯誤しています。 =IF(A1=1,"","TEL")でコピ-も考えたのですが、未入力(A4)の場合もTELで表示されます。C列をいっぺんに指定してIF関数で出来ないものでしょうか?  

  • エクセルのif関数で

    エクセルのif関数でこれができるのかわかりませんが、 C1~C10の中の文字列の中にA1と同じ文字列があればB1に「1」を入れ、なければ「2」を入れるということをやりたくて B1のセルに IF(OR(C$1:C$10=A1),1,2) という計算式を入れました。 関数の引数の中の数式の結果では、正しい結果が表示されてるのですが、B1のセルには間違った結果が表示されます。 また、B2以下B20まで計算式をコピーするとB11以下は#VALUE!になってしまいます。 一つ一つを見てみると、どうやらセルに正しく表示されるのはAの行とCの行が=だった場合のみのようです。 #VALUE!が表示されているセルも含めて、数式の結果では正しい結果が出ているのにセルの表示が違っているのが納得できませんが、おそらく何かが間違っているのでしょう。 間違いを教えてください。 よろしくお願いします。

  • エクセルの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関数を使えばできるような気がするのですが、色々と試してみても中々うまくいきません。 下手な説明で分かり辛いかもしれませんが、どなたかご存知の方がいましたら、ご教授の程頂ければ幸いです。 どうぞ宜しくお願い致します。

  • sumif関数とif関数と配列の使い方

    例えば、下記のように9行×3列のデータがあり、1列目が123かつ2列目がcであるものについて3列目を合計したいのですが(つまり300+600で900を算出する)、1セルに値を算出する方法があれば教えてください。 sumif関数とif関数と配列を使えばできそうな気がするんですが、やり方がよくわかりません。よろしくお願いします。 123  a  100 123  b  200 123  c  300 456  a  1000 456  b  2000 456  c  3000 123  a  400 123  b  500 123  c  600

  • ある条件下でIF関数により取り出した数値を計算する方法

    エクセル関数です。2つの数字の変化が A列  B列 100    1 103    1 109    1 120    1 105    -1 102    -1 120    1 123    -1 ・    ・ の時に,以下の2つの条件を満たす式を作る。(1)B列の数字を3行ずつ見てゆく。3行目までずっと1が続き,数字が変わらなければ(-1が出なければ)3行目のA列の数値(109)を取り出す。(2)数字を取り出してから次の3行目までの間でB列の数字が変わったとき(1→-1,-1→1)には,変わった行のA列の数値(105)を取り出す。次はB7なので120,次はB8なので123…と数字を取り出す度にリセットして,新たに3行の中から新しい数字を取り出す。 (頂いた回答) 3列使います。C4=IF((B3=B2)*(B4=B3)*(SUM(C$2:C3)=0)=1,1,0)。D4=IF(B4<>B3,1,0) E4=A4*(C4+D4)。 リセットする毎に,リセットした時点のA列の数字から取り出したA列の数字を引き算したいのですが,良い関数が思いつきません。

  • if関数とVLOOKUP関数について

    if関数とVLOOKUP関数について エクセル2003で以下のような表を2枚 (シート1とシート2です)作成しています。 上段がシート1で、左上「NO」からA1セルに なっています。 下段がシート2で、特別番号が付番される 人の対象者リストで、「氏名」 がA1セルです。 図が乱れてすいません。 シート1のB列の売上日、C列の氏名は 別ファイルから貼り付けています。 シート2は、特別番号を付番する人の 氏名リストですが、ここでは、便宜上 小文字のアルファベットにしています。 ここでしたい処理ですが、売上日及び氏名を シート1に貼り付けた際に、特別番号対象者 (シート2のリストに挙がっている人) が入ってきたとき、自動的にシート1の A列のNOの列に「特別番号」 との文言を表示させたいのです。 実際に数字を表示するのではなく、 「特別番号」の文字列を表示させたいです。 IF関数とVLOOKUP関数でできると思うのですが よくわかりませんでしたので、教えてください。 NO 売上日 氏名 1 1月1日 A 2 1月2日 B 特別番号 1月3日 a 特別番号 1月4日 b 特別番号 1月5日 c 3 1月6日 D 4 1月7日 E 特別番号 1月8日 e 特別番号リスト(シート2) 氏名 住所 a 東京都 b 大阪府 c 神奈川県

  • IF関数について

    お世話になります。 IF関数で教えていただきたく、宜しくお願いします。 最近エクセルを触り出した超初心者です。 A列の数字とB列の数字を掛けて出た数字(C列)が 500以下なら500と表示し、 掛けた数字が500以上ならその掛けて出た数字が入るようにしたいのです。 500以上の数字となった時に、うまく表示されません。 =IF(C1<300."300","C1") この、"C1"のところが分からず、、

  • IF関数ですと長くなってしまうので・・・

    既出でしたらすみません。 A列  B列  C列 1    1    出勤 2    2    出勤 5    3    休み      4    休み      5    出勤 というデータが入っていたとしまして、 C列の「出勤」(実際は時間が入っていますが)の場合には B列の数値をA列に表示させたいのですが、 出勤の番号を上から順番に表示させる関数がわかりません。 (今A列に入っている数値が本来表示させたい結果です) IF関数で出来ない事はないですが、TRUE,FALSEだけを繰り返していくと そうとう長くなってしまうので、何か良い方法がないでしょうか? よろしくお願い致します。

  • エクセル IF関数 初心者です。。

    A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 2  9:30 Cさん 11:00 3  10:00 Dさん 12:00 4  10:30 Eさん 9:00  1  9:00 A列氏名 B列時間 C列 B列IF関数 9:00からは1、10時からは2、 11からは3・・・ D列はC列のVLOOKUP関数 1=9:00、2=9:30、3=10:00・・・ そこでお聞きしたいのですが・・ A    B   C  D Aさん 9:00  1  9:00 Bさん 10:00 3  10:00 Cさん 11:00 4  10:30 Dさん 12:00 5  11:00 Eさん 9:00  2  9:30 IF関数を用いて IF(B1>=0.375),1,if(B1>=0.416666666666667),2,IF(B1>=0.458333333333333),3・・・ Eさんが2になるような数式がわかりません。 よろしくお願いします。。

専門家に質問してみよう