複数条件でcountif以外を使う方法

このQ&Aのポイント
  • 果物の名前に応じて商品コードを表示するための式が現在の条件で複数条件をカバーできずに入力が困難な状況です。
  • 質問者は、現在使用しているcountif関数を改善し、果物の数が増えても対応できる方法を探しています。
  • ご協力いただける方にご回答をお願いします。
回答を見る
  • ベストアンサー

複数条件でcountif以外を使う方法

色々質問を探して考えてみたのですが、どうしてもわからないので質問させてください。 果物にそれぞれ商品コードがあり、 A列に果物の名前を入力すると、B列に商品コードが入力されるような式をB列に入れています。 【表】     A          B 1   品名       商品コード     2 みかんを購入     0010   3 りんごをもらう     0020 4 ぶどうを捨てる     0030 【式】 B列に入力 =If(countif(A:A,"*みかん*",0010),if(countif(A:A,"*りんご*",0020),countif(A:A,"*ぶどう*",0030,""))) 検索値が文字の上、文章の中から拾っているため上記の関数を使っていたのですが、 最近果物の数とそれに対する商品コードが増えたため、上記の式では多すぎて入力できません。 お手数ですが、どなたかお分かりになる方ご回答お願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

基本的には添付図のように対応表を用意します。 その上でちょっと複雑な数式になりますが、 B2: =INDEX(F:F,MIN(IF(ISNUMBER(FIND($E$2:$E$4,A2)),ROW($E$2:$E$4),9999)))&"" と記入し、必ずコントロールキーとシフトキーを押しながらEnterで入力、以下コピーします。

amon4723
質問者

お礼

お礼が遅くなって申し訳ありません。 ご回答ありがとうございました。 色々試行錯誤した結果、なんとか出来ました。 本当にありがとうございまいた!

その他の回答 (3)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.4

失礼しました、修正させてください 条件は同じです。 =if(sumproduct(($a4=*&$d:$d&*)*($a4=*&$e:$e&*))<>1,¨コード表から特定できません¨,offset($f$2,sumproduct(($a4=*&$d:$d&*)*($a4=*&$e:$e&*)),0,1,1))

amon4723
質問者

お礼

お礼が遅くなって申し訳ありません。 ご回答ありがとうございました。 がんばって試してみたのですが、上手くいかず…すみません。 別のやり方で出来ましたので、また、別の表で試してみようと思います。 ありがとうございました。

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.3

コード表がエクセル形式で存在し D列にミカンや林檎などといつた名詞が E列に拾う、捨てる、売る、もらうなどといった動詞(?)が F列には対応するコードが 各々入っていて A列を第1キーB列を第2キーにソートされている 他ブック参照でも問題ないのですが 書きづらくなるのでご容赦を 今回はこのコート表が同シート内横手3行目からあるものとします。 今手元にExcelがないので勘違いしてたらスミマセン。 ではいきます。 A列データ先頭の真横のB列のセル(仮にB4とします、変わる場合は$A4の4を連動させて変更ください)に =if(of(sumproduct(($A4=*&$D:$D&*)*($A4=*&$E:$E&*))<1,sumproduct(($A4=*&$D:$D&*)*($A4=*&$E:$E&*))>1),¨コードから特定できません¨,offset($F$2,sumproduct(($A4=*&$D4:$D4&*)*($A4=*&$E:$E&*)),0,1,1) 必要なだけ下にフィルしてください お役に立てていたなら幸いです。

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

こんばんは! VBAになってしまいますが・・・ 一例です。 ↓の画像のようにSheet2に表を作成しておきます。 画面左下の操作したいSheet見出し(Sheet1とします)上で右クリック → コードの表示 →VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i As Long, k As Long, ws As Worksheet Set ws = Worksheets("Sheet2") For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For k = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row If InStr(Cells(i, 1), ws.Cells(k, 1)) Then With Cells(i, 2) .Value = ws.Cells(k, 2) .NumberFormatLocal = "0000" End With End If Next k Next i End Sub 'この行まで ※ Sheet1のB列に関数が入っている場合はすべて消えて生データになりますので、 別Sheetでマクロを試してみてください。 お望みの方法でなかったらごめんなさいね。m(_ _)m

amon4723
質問者

お礼

お礼が遅くなって申し訳ありません。 ご回答ありがとうございました。 マクロは今まで使ったことがないのですが、使いこなせれば便利なんでしょうね! 機会があれば試してみようと思います。 ありがとうございました!

関連するQ&A

  • COUNTIF 複数条件について

    countifを使用し、     A 1 ●●数×× 2 ●●語××     B 1 =if(countif(A1,"*数*"),"数学","") 2=if(countif(A2,"*語*"),"語学","") という式で数が含まれていれば数学、語が含まれていれば語学、とB列に表示させるようにしていますが、 現状フィルターで"数"と"語"を拾ってから式を入れています。 上記の式をつなげ、数が含まれる場合は数学、語が含まれる場合は語学と表示させる式を教えてください。

  • エクセル2003 countif関数の応用??

    エクセル2003です。 A列に”りんご”、”みかん”、”すいか”と果物の名前が入っています。 B列にはその果物が売れたときにだけ、 その重量を記入します。(全部1個ずつうります。) 別シートで りんごが何個売れたかを集計した式を作りたいのです。 Countif関数を使って出来そうな気がしたのですが、 検索条件をA列にすると すでにA列に記入済みの売れていないものも数えられてしまい、 売れたりんごの数だけを導き出すことができないのです。 If関数も使えば出来そうな気がするのですが、 うまくいきませんでした。 良いアイデア有りますでしょうか? 宜しくお願いします。 或いは集計機能を使って、同じシートにうまいことできるのだろうかとも 思うのですが、、、

  • Excel データの個数を複数条件付きでカウントしたい

    OS:XP Ver.:Excel2003 Excelの関数で質問です。 いろいろ調べたのですがどうしてもわかりません。 お知恵をご拝借下さい。 A B C D 1月 2月 3月 りんご 250 0 300 みかん 150 80 0 りんご 88 150 200 いちご 0 300 85 ぶどう 0 350 89 (確認画面にするとずれてしまいますが、A列には品名、B~D列には月が入るようになっています。) 上記のような元データがあり、(実際はもっとたくさん) 1月    2月    3月 りんご みかん いちご ぶどう (こちらもずれてしまいますが、それぞれの月の品名ごとの集計を入れたいのです。) のような表を完成させたいと思います。 (1)表に入れるのは、合計数量ではなく【データの個数】です。 1月のりんごは2、みかんは1、という感じです。 ただし、0はカウントしたくないので、1月のいちごとぶどうは0を 返してほしいのです。 countifやsumproductなど考え付くあたり試してみましたが、うまくできません。 どういう数式(関数)を入れればよいのでしょうか? (2)2月以降のデータ範囲を指定する場合はどうすればいいのでしょうか?  1月ならA2:B6とするのかもしれませんが、2月の場合は1月列(B列)が不要ですよね?

  • EXCEL VBA 複数列を2列にまとめる

    下記のようなデータ(列数も行数も常に変わり、固定ではない)を ┌───────────────── │ A 列  | B列   | C列   | D列 ├─────────────────── │ 1 │伝票01 │品名01 | 品名02 │品名03 ├─────────────────── | 2 │0011 │みかん │みかん | りんご ├─────────────────── │ 3 │1001 │りんご  │いちご |    ├─────────────────── │ 4 │1100 │いちご  │みかん | ぶどう  └─────────────────── ↓のように2列にまとめる方法はございますでしょうか?VBAを希望しております。   よろしくお願い申し上げます。 ┌───────────────── │ A │ B   ├───────────────── │ 1 │伝票  │品名 ├───────────────── │ 2 │0011_品名01 │みかん  ├───────────────── │ 3 │1001_品名01 │りんご    ├───────────────── │ 4 │1100_品名01 │いちご ├───────────────── │ 5 │1001_品名02 │みかん  ├───────────────── │ 6 │1100_品名02 │いちご  ├───────────────── │ 7 │1001_品名02 │みかん  ├───────────────── │ 8 │1100_品名03 │りんご  ├───────────────── │ 9 │1001_品名03 │  ├───────────────── │ 0 │1001_品名03 │ぶどう  ├─────────────────

  • Excel関数で複数条件を指定する方法

    Excelで条件を指定して、決まった値を返したいのですが、複数条件の方法がわかりません。 セルA1に入力された文字列に、 【りんご】という文字が含まれている場合はE列に「100」と表示させ、 【バナナ】【みかん】【キウイ】のいずれかが含まれている場合は「0」と表示させ、 上記以外の場合「500」と表示させたいです。 A列が検索したい文字列が入力される列で、E列に結果を表示。 検索する文字列は部分一致で、完全一致ではありません。A1に「青森りんご」と入力されたらE1に「100」と表示させたいです。 条件で書いた2段目の候補は10個程度あり、「上記以外」の候補は1000以上あります。 IF(COUNTIF(A1,"*りんご*"),"100",IF(COUNTIF(A1,"*バナナ*"),"0","500")) 上記のように自分で考えてみて、りんご・バナナ・それ以外 であればできたのですが、バナナのとことを複数指定する方法がわかりません。 他のやり方でも結構ですのでどうすればいいかわかる方宜しくお願いします。

  • Excel2010 複数条件の計算方法

    複数の条件に該当する項目の合計を計算したいのですが、関数の作り方が分かりません・・・ 例えば、A列に文字があってB列に数値が入力されている表があったとして、A列にある項目の中から2つ以上に該当する数値の合計を計算する場合、どのような関数にすれば良いのでしょうか? 例えば、A列に果物の名前(りんご、みかん、ぶどう、メロン・・・)があり、B列にその値段が入っていて、「りんご」と「みかん」と「メロン」の値段の合計を算出するような場合、どのような関数になりますか? 条件がひとつであれば、SUMIF関数を使って計算できるかと思いますが、2つ以上の場合、どのようにすれば良いか分からないのです。 Officeのバージョンは2010です。 ネットで検索してもイマイチ分かりませんでした。どなたか簡単に教えて頂けますでしょうか?

  • エクセルの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関数をなにか勘違いしているのかもしれませんが、よろしくお願いいたします。

  • Countif関数について教えてください。

    アンケートメールをCSV出力したものを集計しようと考えています。 Excelで、countif関数を使ってキーワードを元に数を出そうと思ったのですが、 正しい結果が出ません。 [hoge.xls]      A 1 りんごジュースは   りんごからできている 2 りんごとみかんは   違う果物だ 3 みかんとバナナでは   みかんの方がすっぱい といったデータがあるときに、「りんご」というキーワードが 含まれるセルの個数を出したいと考えています。 結果を出すのは、実際には別のファイルで、A列のキーワードが何個あるかをB列に出したいと考えています。 上記の例だと    A    B 1 りんご   2 2 バナナ   1 といった感じです。 そこでこういう関数を出してみました。 COUNTIF([hoge.xls]Sheet1!$A$1:$A$3,"*"&A1&"*") データが少ない場合には、この関数で正しく結果が出るのですが、 実際には300件以上のデータがあり、結果が実際の 件数よりもずっと少なく出ているような感じがします。 メールですので、元データには改行も含まれますし、 1つのセルに2つ以上、同一のキーワードが含まれることもあります。 原因らしきものの検討がつきません。 どうかお知恵をお貸しください。 #あるいは他のデータ個数抽出方法があれば、教えてください。 よろしくお願いします。

  • COUNTIF関数  この場合の模範式は?

    いつもお世話になってます。下記の質問についてご教示の程よろしくお願いします。 [sheet1]のA1:A100に[リンゴ]と入力してあるセルがあります。 [sheet2]のC1列に果物の品名が記載されてますので、C2列にC1列の品名を検索条件に[sheet1]のA1:A100に[リンゴ]と入力してあるセルの数を「COUNTIF関数」を使って表示させようと思ってます。 ただし、[sheet1]のA1:A10に[リンゴ]と入力してあるセルの中には[リンゴ ]と入力してあるものや[リンゴ    ]と入力してあるセルもあり、"ゴ"の後のスペースが無いものや1つ2つ入れて入力してあるものなどあります。 左隣のセルの文字と同じものが入力された他シートの検索範囲にある、スペースの有無、長さが混在したセル数を数えるにはどのような式を使えばいいのでしょうか? よろしくお願いします。 ※ エクセル2003

  • エクセルにて複数の条件でセルをカウントしたいのですが方法が分かりません

    こんにちは。 他の方の質問と回答を見てやってみたのですが、 上手くいかなかったので質問させて頂きます。 <表>    A列    B列 1 条件1   条件2 2 チームA  りんご傷あり(青森) 3 チームA  みかん(愛媛) 4 チームA  りんご(岩手) 5 チームA  マンゴー(沖縄) 6 チームA  りんご(青森) 7 チームB  りんご(岩手) 8 チームB  みかん(愛媛) 9 チームB  マンゴー(沖縄) 上記の表から、 (1)りんごのセル個数     (この場合「4」) (2)Aチームのりんごセル個数 (この場合「3」) を求めたいと思っています。 (1)りんごのセル個数は =COUNTIF($B$2:$B$9,"りんご*") という計算式で「4」という答えが出ました。 (2)Aチームのりんごセル個数「3」を出そうとして =SUMPRODUCT((A2:A9="チームA")*(B2:B9="りんご*")) と入力したのですが、「*」が入っているためか、 3という数値が出てきません。 どなたか、関数を教えていただけませんか? 実際の表では、 (1)150行まで入力されています。 (2)条件1は「チームA」か「チームB」のみです。 (3)入力されている文字列は、「りんご」「みかん」という「左から3文字」という法則性はありません。 マクロは技術的に使えませんので、関数で対応したいと思っています。 また、別シートに集計表を一覧で作りたいので、フィルタ機能ではなく、関数で対応したいと思います。 以上、長々と申し訳ございません。 お分かりの方、是非回答をお願い致します。

専門家に質問してみよう