プロが教える店舗&オフィスのセキュリティ対策術

Excelの関数の質問です。
エクセルの表で、行と列両方の条件に合致する値を抽出する関数式を教えていただけないでしょうか。

以下のような表があります。
 売上 /個数 10〜20 20〜30
〜1000 5% 10%
1000〜1500 15% 20%

この表に従い、計算をしていきます。
セルのA列に売上が800とあり、B列に個数が15とある場合、C列に関数を入れて、15%という数字(上の表の左上)が返ってくるようにしたいのです。

表の条件が文字列や特定の数字ならMATCH関数などを使えるのですが、条件に範囲があるためどの関数を使っていいか分かりません。

お詳しい方ご教示いだけますと幸いです。
また、関数を使って条件に合うものを抽出するとして、その場合1000〜1500と書かれたセルにはどのように数字を入力すればよいのでしょうか?

質問者からの補足コメント

  • ご回答ありがとうございます。

    ご指摘いただいたように、15%は誤りで正しくは5%でした。大変失礼致しました。

    何か方法がございましたらご教示いただけますとありがたいです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/03/30 18:36

A 回答 (2件)

よくわからないのですが、


>セルのA列に売上が800とあり、B列に個数が15とある場合
どうして15%がでてくるのですか?
5% じゃなあいのかなぁ
この回答への補足あり
    • good
    • 0

こんばんは



お急ぎなら難しくせずに計算しやすい方法を取るのが賢明かと思います。
例えば、A列を
0、1000、1500、2000・・・
とし、
1行目は横に
0、10、20、30・・・
としておけば、ご存じのLOOKUP、MATCH、INDEX等を用いて抽出できるものと推測します。
(条件の境界値がどちらに含まれるのか不明ですが…)

ご提示の表示だと、例えばA列は「1000〜1500」の文字列を「1000」と「1500」に分解し、その値の間になるような行を抽出することになります。
(実際には、横軸についても同様の処理が必要)
それぞれを、算出してからINDEX等で表から値を抽出するという面倒な計算になります。

どうしても、その形式のままで行いたいのなら、ご参考までのヒントを。
値の表示を、少し簡単にして、A列が
0〜1000、1000〜1500、1500〜2000、2000〜2500 ・・・
のような文字列がA2セルから始まっているとするなら、

AGGREGATE(15,6,ROW(A$2:A$10)/(LEFT(A$2:A$10,FIND("〜",A$2:A$10)-1)*1<検索値)/(MID(A$2:A$10,FIND("〜",A$2:A$10)+1,LEN(A$2:A$10))*1>=検索値),1)

とすることで、該当する行番号を求めることが可能です。
1つ目を「〜1000」の表記にすると上記の式でもうまく求まりませんので、更に処理を加える必要があります。
同様にして、横軸方向の列番号を求めて、それらの値で表から検索すればよいですが、全体の関数式は無駄に長くなります。

・・・ですので、簡単に求めることができる最初の案にして、セルの表示を「"~"###0」等としておけば、A列の値はそのままでも、表示は「~0」、「~1000」、「~1500」・・・などとすることも可能です。
あるいは、もう一列(←計算には使用しませんが)用いることで、2列を用いて「0~1000」、「1000~1500」・・・といった表示にしておけば、計算は簡単なままで、ほぼご質問の表示に近いものにもできると想像します。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!