アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
Excel2007のランク付けについて、ご教授下さい。

1つのセルに対して範囲を指定してランク付けは出来るのですが、
条件を指定してやる方法が分かりません。

添付ファイルをご覧下さい。
Z社と取引をしている会社(A社、B社、C社)があります。
Z社は、A社で製造している他社商品を仕入れています。またA社のPB商品を仕入れています。
Z社は、B社で製造している他社商品を仕入れています。
Z社は、C社で製造しているPB商品を仕入れています。

黄色で表示されている金額は、月間の仕入額です。
赤色で表示されている金額は、2月から前月分までの合算金額です。

区分が1つである時は、黄色のセルを参照します。
区分が2つ以上である時は、合計額の黄色のセルを参照して、
ランク付けを表示させたいと思います。

添付ファイルの例ですとC社の場合、C10セル(300000)。A社の場合、C6セル(1500000)を参照して、数字の大きいセルの横に1、2、3から10位まで順位を付けたいと思っております。


仕入先は、100社位あります。
区分は、1つか2つになります。
マクロでやりたいのですが、ご教授頂けないでしょうか?

お忙しい所お手数をお掛けしますが、
宜しくお願いします。

「excelのランクについて」の質問画像

A 回答 (1件)

こんにちは!


質問の意味を取り違えている可能性がありますが・・・

金額はA列に社名が入っている行(空白でない行)
の各社の最下行が一番大きい額と判断しています。

画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面がでますので
↓のコードをコピー&ペーストしてマクロを実行してみてください。
(Alt+F8キー → マクロ → マクロ実行です)

Sub test() 'この行から
Dim i As Long
Columns(4).ClearContents
Columns("A:B").Insert
For i = 2 To Cells(Rows.Count, 5).End(xlUp).Row
If WorksheetFunction.CountIf(Range(Cells(2, 3), Cells(i, 3)), Cells(i, 3)) = _
WorksheetFunction.CountIf(Columns(3), Cells(i, 3)) Then
Cells(i, 1) = Cells(i, 3)
If Cells(i, 1) <> "" Then
Cells(i, 2) = Cells(i, 5)
End If
End If
Next i
For i = 2 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(i, 2) <> "" Then
If WorksheetFunction.Rank(Cells(i, 2), Columns(2)) <= 10 Then
Cells(i, 6) = WorksheetFunction.Rank(Cells(i, 2), Columns(2)) & "位"
End If
End If
Next i
Columns("A:B").Delete
End Sub 'この行まで

※ 一発でご希望の方法!とはいかないと思いますので、たたき台としての回答です。m(_ _)m
    • good
    • 0

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