• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:どの関数を使えばいいのかわかりません。)

どの関数を使えばいいのかわかりません。

このQ&Aのポイント
  • 『AとBを含む文字で、Dの数』という式を作りたいのです。
  • 左列のAとBを対象に、右列のDを抽出してその数を表示したいです。
  • 200個近いデータでの抽出なので、数えるのも一苦労です。

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

  • ベストアンサー
  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

>『AとBを含む文字で、Dの数』という式を作りたいのです。 この条件ならExcel2007以降のバージョンをご使用ならSUMIFS関数で集計するのがお勧めです。 =SUM(COUNTIFS(A:A,{"*A*","*B*"},B:B,"D")) 実際の運用では、A,B,Dの部分はセル参照する数式(ワイルドカード部分は「*」を&で連結する必要がある)にするとよいと思います。 #Officeソフトはバージョンによって、使用できる機能や操作方法が大きく違いますので、質問の際には必ずバージョンを明記するようにしましょう。

yuma_osamura
質問者

お礼

回答ありがとうございます。 あ、バージョンの事、すっかり忘れていました! 以後、気をつけます。 早速教えていただいた式を入力してみました。 初めて数字が返ってきて喜びましたが、何故か数が合いません……使い方が悪かったのでしょうか。 この式の場合、ABが重なっていると重複で数えてしまうんでしょうかね。 そうすると納得出来ます。

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

その他の回答 (11)

  • coldblade
  • ベストアンサー率20% (2/10)
回答No.13

ご確認ありがとうございます。 恐らくOffice2013の64bitを使われていますでしょうか。 ▼操作手順:バージョンを確認する [ファイル]タブ-[アカウント]をクリック  ↓ [○○のバージョン情報]ボタンをクリック  ↓ [Microsoft ○○のバージョン情報]ダイアログでバージョンを確認 例えばWordの場合、下図の[ファイル]タブ-[アカウント]-[Wordのバージョン情報]ボタンをクリックする http://technet.microsoft.com/ja-jp/library/ee681792.aspx

yuma_osamura
質問者

お礼

丁寧な説明、ありがとうございます。 調べた所、32ビットでした。

yuma_osamura
質問者

補足

理由はわかりませんが、プログラムがきちんと起動しました! お騒がせしました。

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

OSとExcelのバージョンは何でしょうか。 インストールが出来ていますか。メニューが出ていますか。 どのステップで止まっていますか。 こちらで試して成功したのですが...

yuma_osamura
質問者

お礼

再度ありがとうございます。 OSはWindows7、バージョンは2013です。 インストールは出来ています。 後はエクセルで使えるようにするだけなのですが、エクセルシート上で右クリックしても、読み込んでくれません。

yuma_osamura
質問者

補足

保存先が悪いのでしょうか? 現在、C:\Program Files (x86)に保存されています。

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.11

>コピペという芸のない行動で申し訳ありませんが、やってみました。 >FINDの対象が ="―" となり、結果が0になってしまいました。 それは何ですか? 論理が分からなければIF関数も扱えないでしょう。 式全体をコピー&ペーストしないと使えない状態なら応用もできません。 関数を覚える前に四則演算と論理演算について学習し直してください。 =SUMPRODUCT(ISNUMBER(FIND("砂",A$1:A$200))+ISNUMBER(FIND("シルト",A$1:A$200)),(B$1:B$200="砂質土")*1)       ↓ =SUMPRODUCT(((ISNUMBER(FIND("砂",C$1:C$200))+ISNUMBER(FIND("シルト",C$1:C$200)))>0)*1,(D$1:D$200="砂質土")*1) ISNUMBER(FIND("砂",A$1:A$200))+ISNUMBER(FIND("シルト",A$1:A$200)) → 2 と言う結果になることが重複であり、これを1にするための工夫として (ISNUMBER(FIND("砂",C$1:C$200))+ISNUMBER(FIND("シルト",C$1:C$200)))>0)*1 → 1 のように変更しています。 1つのセルについては複数の条件にマッチしても1を返さなければ集計誤差が生じます。 ((1+1)>0)*1 → (2>0)*1 → 1 ((1+0)>0)*1 → (1>0)*1 → 1 ((0+0)>0)*1 → (0>0)*1 → 0

yuma_osamura
質問者

お礼

ご指摘ありがとうございます。 しかし、IF関数くらいなら理解できています。 今まで使う事なかった関数だったので、その辺での知識は乏しかったのは事実です。 改めて関数の事を調べ、理解しました。 初めの式が元々間違っていたようです。 お騒がせしました。

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.10

>しかし、他の方と同様、重複してしまっているのでそれも含まれてしまいます。 1つのデータで"砂"と"シルト"が含まれるときに重複カウントします。 そのために"シルト"を含むサンプルデータが無いことを指摘しました。 SUMPRODUCT関数の第1引数(配列)を次のように変更すれば良いでしょう。 ((ISNUMBER(FIND("砂",C$1:C$200))+ISNUMBER(FIND("シルト",C$1:C$200)))>0)*1 加算した結果が0より大きいときに1を返すようにすれば重複を避けられます。

yuma_osamura
質問者

お礼

再度ありがとうございます。 コピペという芸のない行動で申し訳ありませんが、やってみました。 FINDの対象が ="―" となり、結果が0になってしまいました。 IFやVLOOKUP程度の関数しかわからない当方ですので、理由がわかりません…(苦)

全文を見る
すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.8

>例の式に当てはめていたアルファベットは以下のように置き換えました。 >A=砂(土でも可) >B=シルト >D=砂質土 貼付画像で"シルト"を含むサンプルデータがありません。 また、解像度が悪いので文字が判読できない部分があります。 下記のように空白で区切った文字列を提示して頂けるとサンプルを入力する手間が省けます。 礎湿り砂質粘土 粘性土 礎・粘土湿り砂 砂質土 礎湿り砂質粘土 粘性土 基本的にはSUMPRODUCT関数を使って集計しますが、チェック方法で文字列中の特定の文字列を検索するにはFIND関数またはSEARCH関数を使います。 しかし、検出されないときは#VALUE!(エラー)が返りますので数値化する必要があります。 FIND関数の結果をISNUMBER関数に渡してTRUEまたはFALSEに変換して乗算または加算で0または1にします。 前回の数式を次のように修正してみると良いでしょう。 =SUMPRODUCT(ISNUMBER(FIND("砂",A$1:A$200))+ISNUMBER(FIND("シルト",A$1:A$200)),(B$1:B$200="砂質土")*1)

yuma_osamura
質問者

お礼

画像はすみません、少し縮小がかかってしまったので見づらくなってしまいました…… あと、エラーが出る原因がわかりました。 どうも結合セルを式に入れるとダメみたいですね。 なので、強制的に一列にして今回の式で計算してみた所、きちんと返ってきました! しかし、他の方と同様、重複してしまっているのでそれも含まれてしまいます。 その辺は引くよう、bunjii様が教えてくださった式を見ながら対処したいと思います。 長々と失礼しました。 そして、細かく優しい対応をありがとうございます!

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

>この式の場合、ABが重なっていると重複で数えてしまうんでしょうかね。 基本的にどの式の場合も1つの文字列に「A」と「B」の両方の検索文字列が含まれていると重複カウントされます。 もし、このようなデータがあるなら、この組み合わせを引く必要があります。 =元の数式-SUM(COUNTIFS(A:A,{"*A*B*","*B*A*"},B:B,"D"))

yuma_osamura
質問者

お礼

やはり重複カウントしてしまうんですね。 早速コピペ、修正でやってみました! 何とかできました! ありがとうございます。 多少別問題で数が合わない事もわかり、その辺は何とか自分で出来そうです、ありがとうございました!

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

No.5です。 >しかし、何がいけないのか、VALUEと返ってきてしまいます。 COUNTIFS関数において範囲のセル数が不一致だとVALUEエラーとなります。 セルの行がずれても問題ないですが範囲のずれたものがあると思います。 これはSUMIFS関数、AVERAGEIFS関数、SUMPRODUCT関数のいずれも同じです。 =COUNTIFS(A1:A100,"A",B1:B100,"B") =>正常な結果が表示 =COUNTIFS(A1:A100,"A",B1:B99,"B") =>#VALUE! =COUNTIFS(A2:A100,"A",B1:B99,"B") =>ずれているがカウントは有効

yuma_osamura
質問者

お礼

行がずれて、その行数が合わないといけないわけですね。 しかし、見直したところ、行数は合っていました。 =COUNTIFS(A50:A60,"*砂*",B50:B60,"砂質土")+COUNTIFS(A50:A60,"*シルト*",B50:B60,"砂質土") アルファベットを置き換えたものですが、上のように入力してありました。 それでもきちんと返してくれないのは何故でしょう…… 質問ばかりですみません。

yuma_osamura
質問者

補足

お礼をしてしまったあとなので、こちらで失礼します。 エラーの原因がわかりました。 結合セルを式に入れるとエラーになるようです。 なので、一列になるよう打ち込んだ所、きちんと返ってきました! しかし、他の方と同様、重複してしまっているのでそれも含まれてしまいます。 その辺は引くよう、mshr1962様が教えてくださった式を見ながら対処したいと思います。 長々と失礼しました。 細かく易しい対応をありがとうございます!

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

EXCEL2007以降なら =COUNTIFS(A1:A7,"*A*",B1:B7,"D")+COUNTIFS(A1:A7,"*B*",B1:B7,"D") EXCEL2007以前なら =SUMPRODUCT(COUNTIF(A1:A7,"*A*")*(B1:B7="D"))+SUMPRODUCT(COUNTIF(A1:A7,"*B*")*(B1:B7="D"))

yuma_osamura
質問者

お礼

回答ありがとうございます。 バージョンが2013なので、上記の方を使わせてもらいました。 しかし、何がいけないのか、VALUEと返ってきてしまいます。 アルファベットと範囲を置き換えただけなのですが……

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

>恐らく"A"が"*A*"に変えてしまったからだとは思うのですが…… A列の文字列の一部として"*A*"で比較してもエラーにはなりませんが目的通りの検出はできません。 質問ではA列が1文字として提示されていますので文字列の1部一致の場合は別の方法になります。 どのような関数式で集計が可能かを検証するのに少々時間が掛かります。 必要な要件を正確に提示してください。 実データの必要はありませんが同等のサンプルを提示して頂ければ検証してみます。 尚、Excelのバージョンの指定が無ければ最新版で検証します。

yuma_osamura
質問者

お礼

バージョンは2013です。 画像の方が現状の表となります。 この内の右2列を使って数を出したいのです。 例の式に当てはめていたアルファベットは以下のように置き換えました。 A=砂(土でも可) B=シルト D=砂質土 よろしくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.2

一行目は、一行追加して、項目行にし、 一行目のC1、D1、E1セルに、D、F、Gと入力して、 C2セルに、 =AND(OR($A2="A",$A2="B"),$B2=C$1)*1 と入力して、右と下にそれぞれドラッグコピーする。 抽出した数の合計表示は、各列の合計(Σ)で、算出します。

yuma_osamura
質問者

お礼

回答ありがとうございます。 そんな関数の使い方があるのですね! しかし、表を崩したくないというのもあり、aokii様の式は、今回は見送らせていただきます。 次、同じような状況にあたった時、使わせていただきたいと思います。

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

関連するQ&A

  • この場合の関数を教えてください。IF関数とCOUNTIF関数?

      A      B    C  D  F  G 1 12300 2 9800 3 14500 上記の様な表($a$1:$d$3) がある時、 B1 ◎      D1 △   F1◎     C2◎         F2△ B3△      D3◎ F1 に◎を入れた時に、 もし、A列の値が10000より大きいなら(注)、範囲$a$1:$d$3の◎の数を数え結果をG1に2と表示させたいです。(F2に△と入れたら2と表示) (注) 1行目は、12300(A1)なので1行目はカウントの範囲。 2行目は、9800で10000より小さいのでカウントの範囲から外れる。 3行目は、14500はカウントの範囲。 2行目の◎(C2)はカウントされないようにするには、 G1にどのようなCOUNTIFの関数を入れればよいのでしょうか? いつも教えているので、考えたのですが? =IF(A1>10000,COUNTIF($B$1:$D$3,F1),"0")では、間違いとは気づいたのですが? (A1>10000が間違い)どの様にして良いか解りません。 どなたか教えてください。宜しくお願いいたします。 (見にくい表で申し訳ありません)

  • 関数について教えて下さい。

    エクセル2003使用してます。 (現在の表内容) A2:D7 商品名を記入する表があります。 F2 VLOOKUP(A2,A13:B20,2,FALSE) G2 VLOOKUP(B2,A13:B20,2,FALSE) H2 VLOOKUP(C2,A13:B20,2,FALSE) I2 VLOOKUP(D2,A13:B20,2,FALSE) J2 SUM(F2:I2) A13:B20 単価表があります。 (行いたい事) (例)F2の場合 F2に、A2:D2に書かれている、商品単価の合計を一括で、出したいです。 画像に内容を書きましたので、見て頂けませんか? お分かりになられる方、おられましたら教えて頂けませんか? よろしくお願いします。

  • エクセルの関数

      A B C D E F 1 × 8/1 8/2 8/3 8/4 8/5 2 ○ 3 4 3 4 5 3 △ 0 1 4 3 2 4 ■ 6 0 2 1 2 5 □ 5 3 2 1 1 6 ● 3 4 2 1 2 上記の表がSheet1にあり sheet2 に ○の8/3の数値を抽出する関数がわかりません。 =SUMIF(Sheet1!A1:Sheet1!A6,"○",Sheet1!D1:Sheet1!D6) で抽出できるものの、日付が変わったとき対応が全く出来なくて行き詰ってしまいました。行、列ともに条件が必要だと思うのですが、どなたか教えて頂けると助かります。

  • 祝日 土日を除いた合計の出し方

    いつもお世話になります。 WINDOWS7 EXCELL2010です。 平日 土日 祝日の売り上げの合計を出したいのですが、 添付図の 「G19」で困りました。 この「G19」は祝日です。 祝の列の J19 に表示できるようにしたいのですがご指導いただけませんでしょうか。 他の方法または修正がありましたら併せてご教示ください。 参考 A6 =IF(ISNA(VLOOKUP(B6,祭日!$A$6:$D$53,4,FALSE)),"",VLOOKUP(B6,祭日!$A$6:$D$53,4,FALSE)) ※ ○は祝日です。 B6 =TEXT($D6,"yyyymmdd") G6 =IF(F6="","",SUMPRODUCT((WEEKDAY(D6,2)<6)*F6)) H6 =IF(F6="","",(WEEKDAY(D6)=7)*(COUNTIF(祭日!$A$6:$B$53,D6)=0)*F6) I6  =IF(F6="","",(WEEKDAY(D6)=1)*(COUNTIF(祭日!$A$6:$B$53,D6)=0)*F6) J6 わかりません

  • 関数で2つの条件から抽出する表を作りたい。

    A1は手入力D4手入力、H2は=D2&C2 担当者と週で検索して抽出する式を教えて下さい。 上手く出来なくて1行しか抽出しないんです。  A   B  C      D   E   F  G   H 1担当者 沼田 週    1 2 番号 日付 週 担当 企業 名前 住所 検索用 3 1 7月1日 1 沼田 a 高橋 土浦 沼田1 4 2 7月2日 1 佐藤 a 山田 阿見 佐藤1 5 3 7月2日 1 沼田 r 沖田 水戸 沼田1 6 4 7月7日  1 沼田 c 斎藤 土浦 沼田1 7 5  7月9日 2 佐藤 h 鈴木 牛久 佐藤2 8 6 7月14日 3 佐藤 d 河合 土浦 佐藤3 9 7 7月15日 3 高橋 e 吉田 阿見 高橋3 10 8 7月20日 4 高橋 e 木田 水戸 高橋4 11 9 7月4日 1 沼田 g 飯田 牛久 沼田1 上記の表から1週目だったら、1週目の担当者のデータをシート2の表に抽出 週2だったら2週目の担当者データを抽出 A1・D1は手入力 A3は=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) シート2     A   B   C  D  E  F  G 1  担当 沼田 週 1 2  番号 日付  週  担当  企業  名前   住所 3  1  7月1日  1  沼田   a    会田   牛久 4  4  7月2日  1  沼田   r   沖田   水戸 5  6  7月7日  1  沼田   c   斎藤  土浦  6  9  7月4日  1  沼田   g   飯田  牛久 上記の様にシート2に表示したいんです。 細かく教えて下さい。何度やっても1行目のデータしか抽出しないんです。 A3=IF(COUNTIF(Sheet1!D$2:D$1000,B$1)=0,"",MATCH($B$1&$D$1,Sheet1!$H$2:$H$1000,0)) B3=IF($A3="","",IF(VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0)="","",VLOOKUP($A3,Sheet1!$A$2:$H$1000,COLUMN(B1),0))) A4の2行目以降1になってしまって同じ物しか出ないんです。 Aの番号の抽出方法の式を教えて下さい。

  • [Excel]複数の要素が合致するレコード数をカウントする

    Excelにおいて 1,A,B,C,D,E,F, 2,A,C, 3,E,D,C,A, 4,B,E,F,A, 5,D,A,F,C,B, のようなデータがあったとして(数字はレコード番号で、コンマはエクセルのセル区切りだと思ってください。) このデータから「"A"と"C"が両方含まれるレコードの数」 (この場合は4件)を抽出するには、どのように関数を組み合わせればよいでしょうか? ちなみに要素A~Fはソートされておりません。 COUNTIF,VLOOKUPやMATCH関数を使いそうなことはなんとなくわかるのですが、詳しい方よろしくご教示ください。

  • 関数について

    関数について VLOOKUP関数を使ってみようと思っているのですが1列目のデータの抽出に仕方がわかりません。 入力例 sheet1 B列__C列__D列 1_______A____現金 2_______B____現金 3_______C____カード 4_______D____カード 5_______E____現金 抽出例 sheet2 B列__C列__D列 1_______A____現金 2_______B____現金 5_______E____現金 抽出例のC、D列はVLOOKUPを使おうと思っています。 B列の抽出にはどのようにしたらいいかおしえてください。

  • excel 関数作成の簡素化 ?

    A B C D E F G H I J 1784 1784 1781 1782 1809 1813 1821 1813 1784 1784 (1)A-B B-C C-D D-E E-F F-G G-H H-I I-J (1)0 3 -1 -27 -4 -8 8 29 0 (2)=SUMIF(A:I,">0",A:I) で 40になる 上記の(1)を使用せず (2)のように一気に出来ないか? もしも 表示が悪ければ 書き直し する為 回答不要

  • 【エクセル】離れたセルのCOUNTIF関数

    こんにちは。 エクセルのCOUNTIF関数についての質問です。 各セルに以下のような数値が入っている表で・・・  A=10  B=00  C=20   D=30   E=00   F=40   G=50  AとCとEとGのセルを選択し、0以外のセルの個数を数えるとき COUNTIF関数で =COUNTIF(A,C,E,G,"<>0") という数式を立てたのですが、エラーとなってしまいました。 最終的には =((COUNTIF(A,"<>0")+(COUNTIF(C,"<>0")+(COUNTIF(E,"<>0")+((COUNTIF(G,"<>0")) という数式をたてて計算は出来たのですが、もっと簡単(?)な式はあったりするのでしょうか? ご存知の方がいらっしゃいましたら是非お教え下さい。

  • エクセルでの関数について(合致する値を抽出)

    下記下のエクセルにおいて、 ○に一致する値を抽出したいです。 ○には合致するものがいくつかあり、2・3・4・5 すべてを抽出したいのですが、VLOOKUP関数だけではエラーになってしまいます。 どのような関数を用いれば可能ですか? ~~~~~~~~~~~~~~~~~~~~~  A B C D E F 1 ○     ○ 2 2 △     ○ 3 3 ★     ○ 4 4      ○ 5 5 ~~~~~~~~~~~~~~~~~~~~~

専門家に質問してみよう