ここから質問投稿すると、最大4000ポイント当たる!!!! >>

こんばんは。
添付の画像に基ついての質問です。
どうかお知恵をお貸しください!

データ一覧に基づき、★の表の値(黄色塗りつぶしセル)に関数を入力したいです。
(※説明のため表を作成しました。表では組合せは3つが最大ですが、実際は11あります。
小項目についても実際は30種類あります。)
まず、No.1は、大項目Aの小項目、a,b,cの合計です。
No.2は、大項目AとBの小項目の合計ですが、小項目に重複が存在する場合は、値の大きい方を選択して合計します。
No.3についてもNo.2と同様です。
ユーザー定義関数ではなく、できれば関数で処理できればと思います。
ご教授ください。よろしくお願いします。

ちなみに、小項目の種類がすべて違う場合は、
SUMPRODUCT((A3:A11=F5)+(A3:A11=G5)+(A3:A11=H5),(C3:C11))
でやってみました。(絶対値省略)
ただ、これももっと、すっきりできるのではないかと考えましたが、さっぱりわかりません。

「エクセルの関数について(重複する値の最大」の質問画像

A 回答 (8件)

やっぱり無理やりな数式が出てきましたけど 何故 自分で計算できない


表を作っておいてから数式で悩まなければいけないのか疑問に思います。

少なくとも添付のような表にするだけでも
I3:=MAX(($A$3:$A$11=$F3:$H3)*($B$3:$B$11=I$2)*$C$3:$C$11)
Ctrl + Shift + Enterで確定

こうなります。INDEXを挟むかどうかはお任せしますが。

CoalTarさんみたいに1個ずつ足すにしても「最大値を合計する」という
計算以外は 本来無駄な処理です。
「エクセルの関数について(重複する値の最大」の回答画像8
    • good
    • 1
この回答へのお礼

ありがとう

素敵です。
これならどれだけグループがあっても、項目があってもいけます。
ご教授いただいたとおり、まずは別シートにグループごとの小項目の合計を出すシートを作っておくことにします。
おつきあいいただきありがとうございました。
またよろしくお願いしたいです!

お礼日時:2016/07/13 14:28

MAX関数が配列として返せないので、


I3セル
=MAX(IF(IF(ISNUMBER(MATCH($A$3:$A$11,F3:H3,0)),$B$3:$B$11)="a",C$3:C$11))
+MAX(IF(IF(ISNUMBER(MATCH($A$3:$A$11,F3:H3,0)),$B$3:$B$11)="b",C$3:C$11))
+MAX(IF(IF(ISNUMBER(MATCH($A$3:$A$11,F3:H3,0)),$B$3:$B$11)="c",C$3:C$11))
[Ctrl]+[Shift]+[Enter]配列数式、{}で囲まれる。
下へオートフィル
「エクセルの関数について(重複する値の最大」の回答画像7
    • good
    • 0
この回答へのお礼

ありがとうございました。
まとまりのない質問で申し訳ありませんでした。
勉強させていただきます!

お礼日時:2016/07/13 16:30

こんにちは



お求めの回答ではないので、具体例は書きませんが、私ならユーザ定義関数でANo2様がご提示のような処理を考えますね。

 ・小項目値用の変数を作成しておいて
 ・該当する大項目について小項目の最大値をそれぞれ記録
 ・上記処理を『データ一覧』について一度走査すればよいだけなので
 ・最後に小項目値を合計
のような考えで、ご質問の値は比較的容易に求められると思います。
    • good
    • 0
この回答へのお礼

ありがとうございました。
まとまりのない質問で申し訳ありませんでした。
解決することができました。
もっと勉強したいと思います!

お礼日時:2016/07/13 16:33

私は、以下のように考えてみました。


実際は、私の言葉ですと、「大項目」というのは、
レンジとかスコープ、日本語でいうなら、「領域」とか、「属性」というもので、
「小項目」というものが個別のデータだと理解しました。

つまり、「大項目」と「小項目」に並列に扱ってしまうと、とても分かりにくいわけです。

添付の図を見ていただければわかりますが、数が増えれば増えるほど、表は大きくなります。

D13の数式をドラッグすれば出てきます。

=SUMPRODUCT(MAX((D$1=OFFSET(D$2,,-1-COLUMN(A1),3*ROW(A1)))*OFFSET($C$2,,,3*ROW(A1))))

ここの数式の中で、[3*] とありますが、これが、種類が増えれば、[4*] と書き換えていきます。

配列という話が出ていますが、この場合は、VBAの仮想の表を作り上げることも可能ですが、まず、シート上でどのような展開がされるか見てからではないと、ユーザー定義関数には変わりません。しかし、シート上の数式の配列では、大きくなると無理があるかもしれません。
「エクセルの関数について(重複する値の最大」の回答画像5
    • good
    • 0
この回答へのお礼

ありがとうございます。
とても勉強になります。
この場合、Aに小項目2つ、Cに小項目20あった場合、
Aに(大項目ごとに)20行必要ということですよね?

お礼日時:2016/07/13 13:46

> SUMPRODUCT((A3:A11=F5)+(A3:A11=G5)+(A3:A11=H5),(C3:C11))


この数式を見る限り あなたに配列数式の理解力があるとはとても
思えません。止めといた方がいいと思います。「すっきり」以前に
考え方自体が間違ってますし 無駄な括弧を消すことすらできてい
ません。

> ユーザー定義関数ではなく、できれば関数で処理できればと思います。
手段にこだわる前に まず自分で計算できるようになるのが先でしょう。

もちろんやってやれないことはありませんから 数式の出来はともかくい
ずれは誰かが数式を提示するでしょうけど 効率が悪い上に 使う人が理解
もできないものにこだわっても仕方ないように思います。

これが単なる遊びだというならいいんですけどね。
    • good
    • 0

(´・ω・`)…


>作業列を作って1つずつ計算させることを勧める。
>判定するための過程が見えていないことが考えをまとめられない原因と思います。
    • good
    • 0

作業列を作って1つずつ計算させることを勧める。


判定するための過程が見えていないことが考えをまとめられない原因と思います。

たぶん、下の図のようなことをしたのだろうと読んでいる。
「エクセルの関数について(重複する値の最大」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。
一度組合せごとに最大値で合計を出してからということですね。
となると、やはり別に表にまとめたほうがよいということですね。
この方法で行うとした場合、最大値の値はどう持ってきているのですか??
一発で出なさそうであれば、やはり別の作業シートを作るべきなのかなと考えています・・。
ただ、組合せを変えるごとに、その組合せに手直ししなければならないですよね。

お礼日時:2016/07/12 23:40

理解できたような気がするのは、No.1 の 17 だけ。


No.2、3 が 20、21 になっているのはなぜか「さっぱりわかりません」
    • good
    • 0
この回答へのお礼

わかりづらくて申し訳ないです。
NO.2についてです。
まず、大項目Aの小項目と大項目Bの小項目を比べて、大きな値を選択します。
小項目aはAのaの値の方が大きいので、「10」を、
小項目bはBのbの値の方が大きいので、「7」を、
小項目cはBのcの値の方が大きいので、「3」を、
よって、10+7+3=20となります。
No.3も、比較材料が増えますが、同じ考え方です。
よろしくおねがいします。

お礼日時:2016/07/12 23:47

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


人気Q&Aランキング