• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCELのIF、OR、COUNTIF関数について)

Excel IF, OR, COUNTIF関数について

このQ&Aのポイント
  • Excel 2010で使用するIF、OR、COUNTIF関数について詳しく教えてください。
  • IF、OR、COUNTIF関数を使用して、特定の条件に基づいて判別する方法を教えてください。
  • IF、OR、COUNTIF関数を使って判別する際に文字数制限に達してしまう場合、より短くかける書き方や関数はありますか?

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一例です。 ↓の画像のように検索(含まれるもの)のデータを表にしておきます。 そしてB2セルに =IF(A2="","",IF(OR(ISNUMBER(FIND($D$1:$D$16,A2))),"有り","なし")) 配列数式になりますので、この画面からコピー&ペーストする場合は B2セルに貼り付け後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをオートフィルで下へコピーすると画像のような感じになります。 ※ 画像では「#」(まず入ることはないであろう文字) を入れている部分も範囲指定していますので、今後データが増える場合は#の部分に追加すればOKです。 こんなんではどうでしょうか?m(__)m

rberry
質問者

お礼

回答ありがとうございます。 IFで続けていけば「結果」部分を増やすことができそうですね、勉強になります。

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

その他の回答 (6)

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

質問に、こんな数式の長いのを挙げて、読者に読み解かすのでなく、多くても10行程度のデータ実例と、やりたいことを文章で表現できる力を磨くこと。 例 住所などの市区町村名が、指定した市区町村群に該当するかの印を出したい、 ーー IF関数はネストの数(深さ)に制限があるはず。特に2003まではね。 #2のご回答のような例なら、VLOOKUPでも考えられないか考えるものだ。 IF関数のネストが3,4以上になれば他の(関数を使った)方法はないか、考えるべきです。 またはVBAを使ったり、SQL使ったりして処理するものです。 VLOOKUP関数など知らないようでは、エクセルの関数の勉強が足りない。 VLOOKUP、MATCH、COUNTIF関数を使う方法を考えるべき。 ーー 本件は住所などの市区町村名が、指定市区町村群に該当するかということらしいが、住所のほうで市区町村名がそのままでは切り出されていないのでVLOOKUP関数が使いにくい。 住所から、まず作業列に、市区町村名部分だけをを抜き出すことを考えるべきではないか。 Googleででも「エクセル 市区町村 抽出」で照会すれば http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1429197924 以下の記事に適当なものを探すとか。

rberry
質問者

お礼

回答ありがとうございます。 8000字から200字程度にまとめて私の現状を分かりやすく伝えたつもりでしたが理解されなかったようで力不足です、すいません。 勉強が足りないのは承知しております、「聞くは一時の恥、聞かぬは一生の恥」精神で質問させていただきました。

全文を見る
すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.2です! たびたびごめんなさい。 前回は質問の数式をしっかり確認せずに投稿していました。 結局↓の画像のように条件分けがたくさんある訳ですよね? もしそうであると関数で処理してもIFのネストだらけで大変だと思います。 そこでVBAでの一例です。 画像のようにSheet2に表を作成しておきます。 Sheet2の2行目以降のデータには重複はないものとして、実状に合わせて何列・何行作成しておいても構いません。 Sheet2のデータがSheet1のA列に含まれる場合、 Sheet1のB列にSheet2の1行目データを表示させるとします。 画面左下のSheet1にSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j, k As Long Dim ws As Worksheet Set ws = Worksheets(2) Application.ScreenUpdating = False For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To ws.Cells(1, Columns.Count).End(xlToLeft).Column For k = 2 To ws.Cells(Rows.Count, j).End(xlUp).Row If Cells(i, 1) Like "*" & ws.Cells(k, j) & "*" Then Cells(i, 2) = ws.Cells(1, j) End If Next k Next j Next i For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row If Cells(i, 2) = "" Then Cells(i, 2) = "Error" End If Next i Application.ScreenUpdating = True End Sub 'この行まで ※ 一旦マクロを実行すると元に戻せませんので、別Sheetでマクロを試してみてください。 参考になれば良いのですが・・・m(_ _)m

rberry
質問者

お礼

何度も回答していただいてすみません、ありがとうございます。 ExcelのVBAというものにまだ手を出していなかったのでかなりレベルアップしたな…と正直思っております(笑) お手数かけました、親切にしていただいて感謝しきれません。

全文を見る
すると、全ての回答が全文表示されます。
  • kichi4182
  • ベストアンサー率21% (12/57)
回答No.5

もしもあなたが、プログラミングが出来る方なら、VBAで関数を作ってしまうという手もありますよ。 気を付けないといけないことが多々有りますが、文字数制限は無いですし、セルに表示させる文字数は飛躍的に短くなります。1文で表す必要も無いので、複雑な処理も可能です。勉強は必要ですが....... 頑張って下さい。

rberry
質問者

お礼

回答ありがとうございます。 プログラミングは学校で勉強しましたがまだまだ勉強不足なので難しいです・・・精進します。

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

町名と区の対応表があれば、簡単にVLOOKUP関数で表示できます。 数式で対応表を利用せず数式だけで対応するなら、以下のように検索値に配列定数を利用することになります。 =IF(COUNT(1/FIND({"○○町","●●町","◎◎町"},K20),"○○区",IF(COUNT(1/FIND({"△△町,"▲▲町","▽▽町"}),"▼▼区",IF(・・・・・・・・・・,"error")))))

rberry
質問者

お礼

回答ありがとうございます。 一つのセルから複数の条件を探して対応した答えを出すと言うのも色々あるのですね、勉強になります。

全文を見る
すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

一例です。 仮にSheet2のA1:A10に変換元町名(アスタリスク付き)、B1:B10に変換先の区名を定義します。 =IF(SUMPRODUCT(COUNTIF(K20,Sheet2!$A$1:$A$10)),INDEX(Sheet2!B:B,SUMPRODUCT(COUNTIF(K20,Sheet2!$A$1:$A$10)*ROW($A$1:$A$10))),"error")

rberry
質問者

お礼

回答ありがとうございます。 他の回答の例と合わせて一番使いやすいものを使っていきたいと思います、勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

沢山の調べる言葉を列記するだけでも随分長くなりますが, =IF(K3="","",IF(OR(ISNUMBER(FIND({"○○語","△△語","□□語三"},K3))),"語学",IF(OR(ISNUMBER(FIND({"●●数学","▲▲学","▲▲学2"},K3))),"数学","該当無し"))) などように集約することはできます。 長いのがイヤなのでしたら,A列に調べる言葉,B列に該当する語学等を列記しておいて =IF(OR(ISNUMBER(FIND(A1:A6,K3))),INDEX(B1:B6,SUMPRODUCT(IF(ISNUMBER(FIND(A1:A6,K3)),ROW(A1:A6)))),"該当無し") と記入してコントロールキーとシフトキーを押しながらEnterで入力するなどで,式を短くできます。

rberry
質問者

お礼

お早い回答ありがとうございます。 すべてを書き終える前に文字数制限に引っかかっておりますので、いろいろ試してみたいと思います。

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

関連するQ&A

  • エクセルのcountif関数で

    WindowsXPでEXCEL2003を使っています。 A列に固有名詞が入っており、 A列の中でのダブりチェックをcountif関数を使って、 実行しました。式は =countif($A$1:A7,A1) というような感じです。 ところが、見た目は全く変わらないのに、 (下記の図でいうと、「りんご」) 返ってきた数字は1でした。 ただし、「なし」のように2が返ってくるものもあります。 A列      B列 1 りんご     1 2 りんご     1 3 みかん     1 4 いちご     1 5 もも      1  6 なし      2 7 なし      2 (ずれて見苦しいかもしれませんがお許しを) 不思議に思い、一度エクセルからcsvに変換し、 またエクセルファイルになおして、 チェックしてみましたが、結果は同じ。 if関数を使ってみたらどうなるだろうかと チェックしてみたら今度は A1とA2の「りんご」は同じものである という 結果が返ってきました。 countif関数では別物と判断し、if関数では同じもの と判断する・・・ というのは、一体どういうことなのでしょうか? countif関数をなにか勘違いしているのかもしれませんが、よろしくお願いいたします。

  • エクセル IFとORの関数を使いたいのですが

    IFとOR関数を使ってできると思うのですが、うまくいかないので教えてください。 りんごなら、単価×1.2に、キャベツなら、単価×1.5、みかんなら、単価×1.6、その他の材料なら、そのままにしなさい という式ですが、 if(or(((F5="りんご",I5*1.2),F5="キャベツ",I5*1.5),F5="みかん",I5*1.6),I5) こうしたのですが、エラーになります。 どこがおかしいのでしょうか?よろしくお願いします。

  • ExcelのCountif関数の条件に関数を使いたい

    Excel2002のCountif関数の条件に関数を使用することは可能でしょうか? 今日と同じ日付のセルの数をカウントしたく、以下のように記述したのですが、カウントされませんでした。 =COUNTIF(H1:H28,"=today()") 条件を日付で記述すればカウントされるので、セルの値は正しく入力されています。 よろしくお願いします。

  • OR関数 困っています(><。)

    excel関数で複数条件の組合せに悩んでいます。 U20=10か空白だったらK20をAQ16~AV24から探して5列目を表示し、 「5列目&AQ26」を表示させる。 もしくは、U20=5だったら、K20をAQ16~AV24から探して5列目を表示し、 「5列目&AQ27」を表示させたいです。 下記の式、どこが間違っているでしょうか。 #VALUEが出てしまいます。 =OR(IF(OR(U20=10,U20=""),"",IF(ISERROR(VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$26),"",VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$26)),IF(U20=5,IF(ISERROR(VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$27),"",VLOOKUP(K20,$AQ$16:$AV$24,5,TRUE)&$AQ$27),"")) すみません。教えて下さい。。

  • COUNTIF関数について

    タイトルの件についてご助言をお願いします。 エクセル表でいくつかシートがあって、例えば各シートの同じセル番号(例えば3枚のシートのA1のセルとして)にある”○”の数を集計したいとき、COUNTIF関数で次のように入力しました。 =COUNTIF(sheet1:sheet3!A1,"○") ところが、VALUEエラーが出て、集計してくれません。同じシート内でCOUNTIFで”○”の数を計算するのはすんなりできています。(例えば、=COUNTIF(A1:A5,"○"))この関数ではシートごとの集計はできないのでしょうか?ほかの関数を使うのでしょうか?集計する方法をご存知の方ご教示ください。

  • Excelの関数COUNTIFについて

    ExcelにCOUNTIFを設定しています。 セル範囲【D9:Y9】には、 ○、△、×のいずれかが入力されています。 A9が空欄でなければ、○の数をカウントするには、 以下の数式でOKでした。  =IF(A9="","",COUNTIF(D9:Y9,"○")) この数式を○か△であればカウントするような数式に 変更したいのですが、なかなかうまくいきません。 ORを組み合わせればいいのでしょうか・・・ Excelのバージョンは2003です。 よろしくお願いいたします。

  • excelのcountif関数の使い方

    EXCEL2000について教えてください。 過去ログにCOUNTIF関数の話題はたくさんありましたので、参考にしてみたのですがうまくできません。何が悪いのでしょう? やりたいことは、A列にある日付データから、B列の日付の度数をC列に計算したいのです。      A列        B列     C列 [1] 2002/10/1 10:31  2002/10/1  度数 [2] 2002/10/1 12:05  2002/10/2  度数 [3] 2002/10/1 13:35  2002/10/3  度数 [4] 2002/10/2 15:51  2002/10/4  度数 [5] 2002/10/2 19:02  2002/10/5  度数 A列は5000~10000行になり、その行数は不定です。 B列は1ヶ月分で、手入力の日付データですので時分秒は00:00:00です。 ここでC1以下に入れる式で悩んでいます。 (A列のデータ数)-(B2以上のデータ数)-(B1未満のデータ数) ということで =COUNT(A:A)-COUNTIF(A:A,">B2")-COUNTIF(K:K,"<B1") この式を検証してみると、中央と右のCOUNTIF関数の部分がゼロになってしまい、いつも総データ数が答えになってしまいます。  どこが間違っているのでしょう? よろしくお願いいたします。

  • エクセル関数COUNTIFで文字を数えてくれない

    エクセル関数COUNTIFで"文字"の数を集計させる場合、文字をコピーして貼り付けたときなどにその文字を数えてくれないことがあります。同じ文字を手で打ち直すときちんと数えてくれるのですが・・・。F9で再計算させてもカウントしてくれません。どなたか、その原因と解決策を教えていただけないでしょうか。

  • EXCELのIF関数で

     こんにちは。教えて下さい  ある範囲(C4:L4とします)の中にある空白の数によって、一定の数を返すような数式を作りたいのです。空白の数が、0で2、1で3、2で4、3で5、4で6、5で8、6で11、7で15、8で20、9で30、10で0という具合で、規則性はありません。IF関数とCOUNTBLANK関数を使って、次のような入れ子構造の数式を作りました。  =IF(COUNTBLANK(C4:L4)=0,2,IF(COUNTBLANK(C4:L4)=1,3,IF(COUNTBLANK(C4:L4)=2,4,IF(COUNTBLANK(C4:L4)・・・中略・・・IF(COUNTBLANK(C4:L4)=9,30,0))))))))))  最後の閉じ括弧の数は正確ではありませんが(汗)、実際にはきちんと合わせました。  ところがエラーが出てしまうのです。入れ子の階層数に制限があるのでしょうか? それとも他に原因が?  そもそもこんな長い数式ではなく、もっとうまい方法があるような気もするのですが・・・。  よろしくお願いいたします。

  • Excel COUNTIF関数について

    お世話になります。 出張の仕事が多く、国内・海外の予定をExcelでメモしています。 そこで、出張に行った日数を自動的にカウントしようと思い、COUNTIF関数を使用してみたのですがうまく計算されません(数字が0.00のまま) 識別したい文字は、社内+出張と出張(国内)と出張(海外)の3つです。 下記の式で問題ないと思うのですが・・・ =COUNTIF(E4:E34,"社内+出張")+COUNTIF(E4:E34,"出張(国内)")+COUNTIF(E4:E34,"出張(海外)") どこに間違いがあるか分かりません。 そもそも上記で合っているのかもわかりません。 どなたかCOUNTIF関数に詳しい方がおられましたらお教えいただけませんでしょうか。 宜しくお願い致します。

専門家に質問してみよう