• ベストアンサー

Excel でどの関数を使ったらいいでしょうか

SHEET1に下のような表があるとします。(実際の並び順はランダムです) これをデータベースとして、 SHEET2のセルA1に「A社」、B1に「001」と入力すると C1に「製品A」と表示させるにはどの関数を使ったらよいでしょうか? 製品名には同じものはありませんが、社名・番号は同じものがいくつもあるので、社名・番号を入力することによって製品名が特定されるというようにしたいのです。 よろしくお願いいたします。    A   B   C 1 A社  001 製品A 2 A社  002 製品B 3 A社  003 製品C 4 B社  001 製品D 5 B社  002 製品E 6 B社  003 製品F 7 C社  001 製品G 8 C社  002 製品H

noname#245610
noname#245610

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.2

こんにちは。maruru01です。 C1に、 =INDEX(Sheet1!$C$1:$C$8,SUMPRODUCT((Sheet1!$A$1:$A$8=A1)*(Sheet1!$B$1:$B$8=B1)*ROW($A$1:$A$8))) と入力します。 ただしこの式の場合、社名・番号の組み合わせが表に存在しない場合にSheet1のC1の値(例だと製品A)を表示してしまいます。 そこで、以下の式だと、該当するデータがない場合に、「#VALUE!」というエラーを表示しますので、エラートラップ出来ます。 =INDIRECT(ADDRESS(SUMPRODUCT((Sheet1!$A$1:$A$8=A1)*(Sheet1!$B$1:$B$8=B1)*ROW($A$1:$A$8)),3,1,TRUE,"Sheet1")) エラートラップは、上の数式をX(=は除く)とすると、 =IF(SUMPRODUCT((Sheet1!$A$1:$A$8=A1)*(Sheet1!$B$1:$B$8=B1)*ROW($A$1:$A$8))=0,"",X) とすれば、エラー時は表示なしに出来ます。 数式が長いですが。 ちなみに、表が昇順にソートされている必要はありません。

noname#245610
質問者

お礼

できました!どうもありがとうございます!! どうしてこういう式になるのかは未だ全然理解できていないのですが…これから勉強して理解できるようにしようと思います。 とりあえず大変助かりました。 ありがとうございました!

その他の回答 (3)

  • fever
  • ベストアンサー率43% (32/73)
回答No.4

DGET関数というのを使われては如何でしょうか? 表の一番上に1行足して、A1には社名・B1には番号・C1には製品名等の項目欄を設けます。 SHEET2の方にも同じ項目欄を作成して下さい。 SHEET2のC2に =IF(OR(A2="",B2=""),"",DGET(Sheet1!A1:C9,C1,A1:B2)) と入力してください。

noname#245610
質問者

お礼

ご回答ありがとうございます。 Sheet1と同じ順序で入力した時はうまくいったのですが、ランダムに入力するとVALUE!になってしまうようです… この式はそのまま下へドラッグしてコピーしては駄目だったんでしょうか…? とりあえずNo.#2の方のお答えで解決できましたが、DGET関数もこれから勉強してみます。 どうもありがとうございました。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

No.2です。 言い忘れてたことがあります。 Sheet1の表で、社命と番号の組み合わせはユニークである必要があります。 つまり、同じ社名で同じ番号のデータが複数あってはダメです。 もしあると、No.2の式では、でたらめな値を返します。

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.1

関数でという事ですが、一般的な方法が別にあります。 1行目に行を挿入して、 A1セルに会社名 B1セルに番号 C1セルに製品名 の様にして、 [データ]→[フィルタ]→[オートフィルタ]とすると、 |会社名▼|番号▼|製品名▼| の様になります。 会社名や番号を選択することで商品を絞り込めます。 どうしても関数でという事ですと、データが降順にソートされている事が前提になってしまいます。 また、2個の値から1個を絞り込むようなものは見つかりませんでした(私の知識不足かもしれませんが)。

noname#245610
質問者

お礼

ご回答ありがとうございます。 オートフィルタでも特定は可能なのですが、入力にスピードが要求されるので、プルダウンメニューではなくてインプットした瞬間に表示されるようにしたかったのでした。 No.#2の方の回答で解決できました。 どうもありがとうございました。

関連するQ&A

  • エクセルの検索関数について

    エクセルの検索関数について、以下のことで教えてください。 以下のような甲~丁製品データが並んでいます。B列にはチェックボックスを配置し、例えば「丙社製品」を選ぶ場合にB3にあるチェックボックスにチェックしてA3セルが「TRUE」となるようにセットされています(チェックしたチェックボックスは■で表現しています)。チェックされる(TRUEとなる)製品は一つだけです。 <シート名:製品リスト> A B C 1 FALSE □ 甲社製品 2 FALSE □ 乙社製品 3 TRUE ■ 丙社製品 4 FALSE □ 丁社製品 そこで、『本シート内A1~A4中の「TRUE」に該当する製品名(C列の何れか)を拾って』別シートのあるセルに「○社製品」と掲載したいのです。 IF関数でも可能なのですが、製品が7つ以上の場合には使えません。VLOOKUP関数をやってみましたが、A列の「TRUE」「FALSE」がランダムになる為、「昇順」とならず、エラーが出てしまいます。 単純なことなのかもしれませんが、壁に当たっています。 どなたか分かる方がいましたら教えてください。

  • エクセル・if関数

    シート名「計算式」のセルA1には日付の入力 シート名「計算式」のセルB1には計算式が入力されている シート名「計算式」のセルB1は別シート セルC1にリンクしている シート名「計算式」のセルA1に入力した日付が 2008/12/31以降ならば、 別シート セルC1の数字を100倍にしたい場合の 関数を教えていただきたく思います。 質問が分かりづらくて申し訳ありません。 よろしくお願いいたします。

  • EXCELのドロップダウンリスト

    EXCELで困っています。以下の例です。 Sheet1にリスト表を作成し、Sheet2の表に入力します。 社名及び製品名を名前の定義でドロップダウンできるようにします。 A列に   社名:  A社・B社・C社・・・・ B列に  製品名: ねじ・ナット・スプリング・・・・・ C列に  製品番号: GH1・HK2・KS4・・・・・・ 尚、製品名および製品番号は社名により内容が異なります。 Sheet2の表の入力でB列の社名クリックで社名がドロップダウン選択でき、C列の製品名クリックで製品名がドロップダウン選択できます。 D列で製品名に準じた製品番号を自動で入力できるように VLOOKUPを用いて表示できたのですが、 問題は製品名は同じですが製品番号が違う時、同一の製品名の どれを選択しても同一製品名の中の最上位の製品番号しか 選択されません。 どうぞこの問題の解消していただける方のご回答をお願いします。

  • EXCEL関数について

    EXCEL関数について EXCEL2003を使用しております。 お知恵を拝借願います。 「りんご」、「いちご」、「なし」は「グループ1」 「バナナ」、「メロン」は「グループ2」というように、 果物を20個のグループに分けます。 それぞれのグループの果物は、1個から10数個まで様々です。 Sheet2、A列、A2~A100セルに果物名、 Sheet2、B列、B2~B100セルにグループ番号(1~20)がランダムに入力されています。 ここで、Sheet1のA2セルに「りんご」と入力すると、 Sheet1のB2セルにグループ番号「1」が返せるような関数はありますでしょうか? 「VLOOKUP」で試してみたのですが、数字ではなく果物名から検索したいのと、 数字が重複しているので使えないことに気付きました・・・。 何卒ご教示頂きたく宜しくお願い致します。

  • エクセルでの関数

    質問させていただきます。 シート1のA1、B1、C1セルのどれかに文字が入った場合、シート2のA1セルに入力された文字をそのまま表示するにはどういった関数をしようすればよろしいでしょうか?お願いいたします。 (例) シート1のA1セルに○が入り、B1、C1セルには何も入らない場合、シート2のA1セルには○と表示される

  • エクセル関数について

    いつもお世話になります。 ”管理”と”リスト”というシートがあります。 ”管理”シートは A1    B1    C1・・・・・ 番号   名前   住所・・・・ と、情報が管理してあります。 ”リスト”シートのB3に番号を入力するセルを作りB11に =IF($B$3="","",VLOOKUP($B$3,注文管理!$A$3:$AE$9880,31)) という関数を入れて、”管理”シートの該当セルに記入があるなら B11に返すようにしています。B11に答えが返った場合、D4に「★備考あり★」と返したいのですが、 =IF(B11>1,"★備考あり★",IF(B11<1,"")) の関数を使うと、もともとB11には関数が入っているのでずっと「★備考あり★」のままです。 これを、B11に答えが返ってきた時のみ「★備考あり★」とする関数はありますか?

  • エクセル 関数の質問

    いうも回答して頂きありがとうございます。 入力用シートの A1セルに a又は b又は c ・・・ と入力 A2セルに a又は b又は c ・・・ と入力 A3セルに a又は b又は c ・・・ と入力 みたいな感じに入力されていたとします。 で、他の設定用シートの B1セルに a に対応した時間が入力 B2セルに b に対応した時間が入力 B3セルに c に対応した時間が入力 上記の時 入力用シートのC1にA1~A?までの時間の合計を出したいのですが どのような関数を使えばよろしいのでしょうか? 御指導の程、宜しくお願い致します。

  • エクセルの関数

    宜しくお願い致します。 エクセルで以下の関数を入力したいのですが、ご存知のかた教えて頂けませんでしょうか。 WIndows8, エクセル2013 です。 シート1、 シート2と、2つございます。 どちらのシートもA列に商品管理番号が入力されております。 ただ、並び順がバラバラで、列の数もあっておりません。 シート1は商品数10000、 シート2は8000で、どの商品が少ないのか分からない状態です。 シート2のB列にだけ、仕入れ金額が入力されております。 やりたいことは シート2のA列の中から一緒の管理番号を探し、B列の仕入れ金額を 引っ張ってきて、シート1のB列に仕入れ金額を入力したいです。 宜しくお願い致します。

  • エクセルの関数について

    エクセルのシート1で1行目には見出しがあります。 A1には「店名」の文字 A2には、A店 A3にはC店 A4にはB店 A5にはA店とA2~A200には、ランダムにA店~C店の文字がランダムに入っています。 B2には、「個数」の見出し文字。B2には 3 B3には 201  B4には 42 などとB2~B200まで色々な数字が入っています。 ちなみに B列には 0~300までのランダムな数字。 これをシート2に、B列の数の区分けをしたいのです B列の区分け 0~30 31~50  50~300  よって、シート2のA1には「店名」という文字。B2には 0~30  C2には 31~50  D2には50~300という文字が入っています・ シート2のA2には、A店 シート2のA3には B店 シート2の A4には C店 という文字が入っています。 シート2のB2にはシート1のA店のB列にある B2~B200に入ってる文字の 0~200までに入ってる数字 0~30の セルの個数を出したいのですが どうやってシート2に関数を入れたらいいのですか?教えてください

  • エクセルの関数についての質問

    マクロはわかりません。出来れば関数で 例えば A列に順番にA社(セルA1)B社(セルA2)C社(セルA3)~ B列にひとつだけ"○"をつけた会社が 選定会社名(セルC2) とやりたいのですが関数を教えてください。

専門家に質問してみよう