Excelのセルに埋め込まれた文字列を式として利用する方法

このQ&Aのポイント
  • Excelのセルに埋め込まれた文字列を式として利用する方法について説明します。
  • Excelの表で品名選択のコンボボックスを使用して式を簡潔化する方法を解説します。
  • 品名選択で選択された品名のランクがAのものを数えるための式を作成する方法を紹介します。
回答を見る
  • ベストアンサー

セルに埋め込まれた文字列を式として利用したい

品名      |ランク ------------|----------- みかん     |A いちご     |B みかん     |A みかん     |B りんご     |A りんご     |B いちご     |B りんご     |B 品名選択: -------------------- |全て選択     |▼| ←A15セル -------------------- |いちご       | |みかん       | |りんご       | |いちご&みかん   | ---------------------- 上記のようなExcelの表があります。 表の下には品名選択のコンボボックスが用意されています。 品名選択で選択されたもので、ランクがAのものを数えたいと思っていますが、 品名選択の方法が複雑なため、SUMPRODUCTで表すと式がとても長くなってしまいます。 =SUMPRODUCT((B2:B9="A")*((A15<>"全て選択")*(A15<>"いちご&みかん")*(A2:A9=A15)+(A15="全て選択")+((A15="いちご&みかん")*((A2:A9="いちご")+(A2:A9="みかん"))))) 式をもう少し簡潔にしたいと思い、以下のように品名が選択された時に隣のセル(B15)に式を表示するようにし、 -------------------- |全て選択     |▼| (A15="全て選択") -------------------- |いちご       | (A2:A9=A15) |みかん       | (A2:A9=A15) |りんご       | (A2:A9=A15) |いちご&みかん   | ((A2:A9="いちご")+(A2:A9="みかん")) ---------------------- =SUMPRODUCT((B2:B9="A")*(B15))としてみたのですが「#VALUE」となってしまい計算されません。 (=SUMPRODUCT((B2:B9="A")*INDIRECT(B15))も試してみたのですが、出来ませんでした…うーん??) コンボの隣にセットした文字列を数式の一部として使用する事は出来るのでしょうか? 出来る場合、方法を教えて下さい。 よろしくお願いします。

  • a-zma
  • お礼率94% (17/18)

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.5

No.1です。すみません間違えました =SUMPRODUCT((B2:B9="A")*(ISNUMBER(FIND(A2:A9,A15,1))+(A15="すべて選択"))) が正解です。

a-zma
質問者

お礼

お礼が遅くなってしまい申し訳ありません。 mshr1962さん、回答ありがとうございました。 回答の式を使用させていただきます♪

その他の回答 (5)

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

データメニューのピボットテーブルレポートを使ってみると,複雑な数式を全く使わずに必要な集計を自在に取り出すことができます。(複雑な数式大好きの時は,スルーしてください) 手順:仮にご利用のExcelが2003までの場合 A:B列を列選択してピボットテーブルレポートの作成を開始する  行に品名  列にランク  データ範囲にランクを投入 いまAだけ集計したいのでランク▼の選択肢からAのみチェック 品名▼の選択肢から集計したい品目(添付図ではみかんとリンゴ)を選択すると,2つと1つで合計で3つありますと即座に結果が得られます。 もしもこの集計結果を更に何かの計算で二次利用したいときは,GETPIVOTDATA関数を使います。

a-zma
質問者

お礼

お礼が遅くなってしまい申し訳ありません。 keithinさん、回答ありがとうございます。 ピボットテーブルは、使った事なかったのですが便利ですね~∑(@_@)! 色々試してみたのですが、欲しいデータがすぐに出て嬉しくなりました(笑) 複雑な数式を作ったはいいけど、修正する時に「…はて?」と思う事が多いので、 これからは積極的にピボットテーブルを使ってみたいと思います。 ありがとうございました♪

回答No.4

#2です >いただいた回答の式が理解できなくて…解析中です(;・∀・) 空白を条件範囲に入れてしまうと、すべて数えてしまうようです。 (for XL2003) =DCOUNT(A1:B9,,D1:INDEX(E2:E7,COUNTA(D2:D7))) 数式は内側から検証します COUNTA(D2:D7) 品名を入力した個数です INDEX(E2:E7,COUNTA(D2:D7)) 品名が2個入力されていれば INDEX(E2:E7,2) つまり E3セルを返します INDEX関数は、セル参照を返す性質があります。 よって D1:INDEX(E2:E7,COUNTA(D2:D7)) は D1:E3 を返します(品名2この場合) =DCOUNT(A1:B9,,D1:E3) はデータベース関数 =DCOUNT(Database,フィールド,Criteria) フィールドは特に必要ないので省略。 Criteriaは条件表の書いてあるセル範囲。 # ちなみにセルに設定する入力規則から作るリストは、 # 「ドロップダウンリスト」と呼びます。

a-zma
質問者

お礼

CoalTarさん、丁寧に解説までして下さりありがとうございます。 いただいた説明で、どういう式なのか理解できました。感謝です! DCOUNT関数、これからガンガン使えそうですヽ(´ー`)ノ →式中にE1セルの参照が無かったので、横着して「ランク」ってタイトルを付けずにテストして  ました。  良く分からない結果が返ってきて…「?」だったのですが、横着しちゃだめですね! # 「ドロップダウンリスト」と呼びます。 これから気をつけます。紛らわしくしてしまってすいません(汗)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.3

No.1です。 そういえば"全て選択"もあるのでしたね。 =SUMPRODUCT((B2:B9="A")*ISNUMBER(FIND(A2:A9&"全て選択",A15,1)))

a-zma
質問者

お礼

mshr1962さん、何度も回答くださり、ありがとうございます。 いただいた式ですが、私の環境だとなぜかうまくいかなかったので、少し直して↓の式にしました。 =SUMPRODUCT((B2:B9="A")*((A15="全て選択")+ISNUMBER(FIND(A2:A9,A15,1)))) それでも、最初の式よりは断然、簡潔になりました。 ありがとうございます♪

回答No.2

別の条件表を作ってはどうですか? =DCOUNT(A1:B9,,D1:INDEX(E2:E7,COUNTA(D2:D7))) 別表において品名を上から順に入れること # コンボボックスを作れるなら、マクロに挑戦しても良いかもしれませんね

a-zma
質問者

お礼

CoalTarさん、お忙しい中、時間を割いて考えて下さりありがとうございます。 私のお勉強不足で、いただいた回答の式が理解できなくて…解析中です(;・∀・) 取り急ぎ、お礼をと思いまして…

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.1

B15のセルを使わないで、下記の数式でできませんか? =SUMPRODUCT((B2:B9="A")*ISNUMBER(FIND(A2:A9,A15,1)))

a-zma
質問者

お礼

mshr1962さん、回答ありがとうございます。 教えていただいた式だと、「りんご&みかん」とか「りんご&いちご」等が増えても対応できますね。 |   ´ω`|φメモメモ でも、「全て選択」に対応できないみたいです…(悲) 「りんご&みかん&いちご」みたいにすればいいのですが、実際は商品数が多いのです。 説明が足りてなくてすいません。 ありがとうございます。

関連するQ&A

  • Excel2003 複数条件でカウントしたい

    品名   |産地   |ランク --------|--------|----------- みかん  |静岡   |A りんご  |青森   |B みかん  |愛媛   |A みかん  |静岡   |B りんご  |長野   |A りんご  |長野   |B 上記のようなExcelの表があります。 表の下には以下のコンボボックスが用意されいて、それぞれ一覧から選択 できるようになっています。 品名選択: ------------------- |            |▼| ←A15セル -------------------- 産地選択: ------------------- |            |▼|←A18セル -------------------- ランク選択: ------------------- |            |▼|←A21セル -------------------- 上記のようなExcelの表があります。 表の下にはのコンボボックスが用意されいて、それぞれ一覧から選択できるようになっています。 コンボボックスで選択された品名・産地・ランクの個数を求めたいと思います。 全てのコンボボックスが選択されている場合は以下の式で求められました。 =SUMPRODUCT((A2:A7=A15)*(B2:B7=A18)*(C2:C7=A21)) 未選択の場合はその条件で絞り込みをしたくないのですが、どのような式にすれば対応できるでしょうか? 例えば、全て未選択の場合は全ての明細がカウント対象。 品名と産地が選択され、ランクが未選択の場合、品名と産地で絞り込みランクは何でも良い。 という条件となります。

  • エクセル重複セルについて

    例えば    A   B 1  品名 数量 2 みかん  2 3 りんご  2 4 みかん  1 5 いちご  1 6 りんご  1  とあるとして、 他のセルに    C   D 1  品名  個数 2  みかん  3 3  りんご  3 4  いちご  1  のように 重複セルを削除し、なおかつ 個数もまとめるというようなことは エクセルでできないでしょうか? 宜しくお願いします。

  • セル結合のコンボボックスの選択方法

    エクセル2003を使用しています。 2シートのブックを使用しており、 シート1:売上一覧(コンボボックスでシート2から品名を選択) シート2:品名と価格の表       A1     B1  品名 いちご    50円      ばなな   100円        ・     ・ となっています。 シート1のコンボボックスで いちごを選択したら、 いちごの隣のセルに価格を自動入力させたいと思っています。 シート1のコンボボックスは、20個あり、 コンボボックス1は、A1A2B1B2セルを結合して 結合セル一杯にコンボボックスを1つ作成しています。 どのようにしたらいいでしょうか? VLOOKUP関数を教えていただきましたが、 よろしくお願いいたします。

  • 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 │ぶどう  ├─────────────────

  • エクセル関数式で部類ごとの平均を求める。

     初めまして、よろしくお願いします。    A   B   C   D 1リンゴ      6 2ミカン      2 3イチゴ      8 4ミカン      2 5リンゴ      4 6ミカン      6 7イチゴ      6 8 9 という表があります。この表のA9に”リンゴ”と打ち込むと、B9にリンゴの平均値”5”が出力されるようにしたいと思います。表の部類と値、数は変化します。A9の部類を拾い出して平均を求めることのできる関数式を教えて頂きたく、よろしくお願いします。

  • セル内の文字列に複雑な処理をしたい

    セルの中の複数の異なる文字列を以下のように処理したいのですが、Excelの標準の文字列操作の関数で試行錯誤してみたのですが、どうもうまくできませんでしたので、ご存知の方がいらっしゃいましたらご教授ください。VBAで処理しないとできないかもしれませんがよろしくお願いします。 あるリストのC列に備考欄が設けてあり、次のようなデータが入っています。 4/30 みかんを買った(強制改行して) 5/1 りんごを売った 5/2 ぶどうを食べた 5/5 すいかを買った このセルを調べて、 (1) セル内に"みかん"と"りんご"という文字列があったら、これを取り出して、右隣のセルに表示           (結果)⇒ みかん りんご (2) セル内に"みかん"と"りんご"という文字列があったら、これを"A","B"に置き換えて、右隣のセルに表示          (結果)⇒ A B (3) セル内の数値データと"を食べた"、"を買った"、"を売った"を取り除いて、右隣のセルに表示          (結果) ⇒ みかん りんご ぶどう すいか   (4) セル内に"か"を含む文字列があったら個数に関係なく"A"に置換して右隣のセルに表示             (結果) ⇒ A   すべて取り出したい文字列(上の例ではみかん、りんご)や置換したい文字列(A、B)以外の文字列は全てクリアして表示しないようにします。少し複雑ですが、やり方をご存知の方がいらっしゃいましたら、お教えください。

  • エクセルでの自動入力方法

    エクセル2003を使用しています。 2シートのブックを使用しており、 シート1:売上一覧(コンボボックスでシート2から品名を選択) シート2:品名と価格の表       A1     B1  品名 いちご    50円      ばなな   100円        ・     ・ となっています。 シート1のコンボボックスで いちごを選択したら、 いちごの隣のセルに価格を自動入力させたいと思っています。 どのようにしたらいいでしょうか? イメージはアクセスの Me.価格=Me.品名.Column(1)ですが、エクセルが解りません。 よろしくお願いいたします。

  • A列にある文字データで△△を含むセルの値をB列に□□にして置き換えしたい

    A列に文字データが100行まであります。    A           B    1 ミカンを食べた     ZZ 2 イチゴを食べた     XX 3 西瓜を食べた      YY 4 ミカンを捨てた     ZZ 5 西瓜を拾った      YY 6 ミカンを無くした    ZZ 7 西瓜を貰った      YY 8 イチゴをあげた     XX それを表のようにB列(任意の列)に置き換えたいです。 イチゴを含むセルはB列にXXをミカンはZZみたいな感じです。 A列のセルには同じ文字列は(今のところ)含みません。 文字の一部を置き換えて変換し、それを繰り返すところまではできましたが、上記のことがができません。 VBAを使って一発で変換したいのですが教えていただけますでしょうか?

  • エクセル 複数セル 文字の統合

    エクセルで,次のような操作ができないかとご相談です。 セル  A   B    C    D    E     F    結合セル 品名 りんご みかん  なし  りんご  みかん  ぶどう  りんご2,みかん2,なし,ぶどう 結合セルには,「&」と”,”を使って「りんご,みかん,なし,りんご,みかん,ぶどう」とはできるのですが,重なりのある言葉に関しては,まとめて数字にできないかと思っております。 何かよいお知恵は無いでしょうか?ご教授いただければ助かります。

  • エクセルのセル内の重複文字列処理について

    よろしくお願いいたします。 セル内にスペースで区切られた文字列(単語)があり、文字列の数は不確定です。 その文字列の中で重複する文字列があり、それらを1つにまとめたいという要望です。 セルの行数は約6000ほどあります。 例 A1セル:リンゴ リンゴ みかん B1セル:リンゴ みかん A2セル:みかん バナナ みかん バナナ みかん B2セル:みかん バナナ ・・・ よろしくお願いいたします。 Windows7 HomePremium Office2010

専門家に質問してみよう