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

■■セダン■ワゴン■スポーツ■カテゴリ
田中□1□■□1□■□□□□■
佐藤□1□■□2□■□□1□■
鈴木□1□■□2□■□□3□■
高橋□1□■□4□■□□4□■
山本□1□■□3□■□□1□■


エクセルでこんな感じの表があります。
カテゴリの列に、一番大きな数字の列名(セダン・ワゴン・スポーツ)を
表示させたいのですが、どのようにすればいいのでしょうか?

EX佐藤→ワゴン、鈴木→スポーツ、山本→ワゴン

それから同数のものがある場合には、(田中、高橋)の場合には、同数と
表示させたく思っています。また数字がはいったセルには、データがない
場合があります。

以上よろしくお願いいたします。

A 回答 (4件)

A1から表が作ってあるとして、カテゴリはD列ですから同率一位を考


慮しなければ
D2: =INDEX($B$1:$D$1, 1,MATCH(MAX(B2:D2),B2:D2,0))
でいいんです。match関数とindex関数の組み合わせは表の検索で頻繁
に使いますから、憶えとくと便利ですよ。

で、「同数」の処理ですが、「最大値に一致するセルの個数が1を超
えたら」ですから、
D2 : =IF(COUNTIF(B2:D2,MAX(B2:D2))>1,"同数",INDEX(以下同文))
のように拡張します。
    • good
    • 2

関数式の複雑さに飽きたら


VBAでどうぞ。
考えたとおりコーディングするだけです。
Sub test03()
For i = 2 To 6 '2行目から6行目まで繰り返し
Max = 0 '最大値をわざと小さくする
For j = 2 To 4 'B列からD列まで繰り返し
If Cells(i, j) > Max Then '今までの最大値より大なら
Max = Cells(i, j) '置き変える
nam = Cells(1, j) '列の見出しを取る
Else
End If
Next j
Cells(i, "E") = nam '列の見出しをE列にセット
Next i
End Sub
(テストデータ)A1:D6
セダンワゴンスポーツ
田中132ワゴン
佐藤213スポーツ
鈴木331セダン
高橋231ワゴン
山本112スポーツ
(結果)E2:E6に上記のようにセットされます。
    • good
    • 1

関数を組み合わせて作成する数式には、いろいろな作り方があると思います。



一例ですが、

=IF(COUNTIF(B5:D5,MAX(B5:D5))>1,"同数",OFFSET($A$1,0,MATCH(MAX(B5:D5),B5:D5,0)))

でどうでしょう?
    • good
    • 0

まず 最大値の取得は


=MAX(C2:C6)
などというふうにすればいいでしょう。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています