Excel VBA 同順位の順位補正について
A1 100 B1とB2を連結
A2 150 B1=A1+A2 250
A3 180 B3とB4を連結
A4 70 B3=B3+B4 250
A5 100 B5とB6を連結
A6 200 B5=A5+A6 300
このままだと、
B1 順位2
B2 順位3
B3 順位1
判定条件
B列の値が大きい順にC列に順位を記載する
ただし、B列に同順位があるときは、A列を参照して、その中で、一番大きい値を持っているA列(この場合は、A3)の隣セルの順位を上げる
最終的な表示は
B1 順位3
B2 順位2
B3 順位1
上記のようにしたいです。
私が、思いつくのは、For Eachで同じものを求めて、
C列に重複と表示して
その重複のセルを基点として、offsetで指定する
こんな感じでコードを記載しているのですが、どうもうまくできません。
お手数ですが、どのようなコードになるのが、こ教示していただけないでしょうか。
お願いします。
No.2
- 回答日時:
実際はB列の結合セルは3つだけではなくて、もっと多いのでしょうか。
例えば、添付画像のように。赤線が提示された部分です。青線が例として追加した部分です。
レイアウトは添付の画像であってますか?
No.3ベストアンサー
- 回答日時:
No2です。
以下のマクロを標準モジュールに登録してください。Option Explicit
Public Sub 順位付()
Dim maxrow As Long
Dim row1 As Long
Dim row2 As Long
Dim max_val As Long
Dim max_row As Long
Dim wval As Long
Dim rank As Long
maxrow = Cells(Rows.Count, 1).End(xlUp).Row 'sheetの最大行取得
If (maxrow Mod 2) <> 0 Then
MsgBox ("A列行数不正")
Exit Sub
End If
Range("C1:C" & maxrow).Value = ""
rank = 1
For row1 = 1 To maxrow Step 2
max_val = -1
max_row = 0
For row2 = 1 To maxrow Step 2
If Cells(row2, "C").Value = "" Then
wval = Cells(row2, "B").Value
If wval = max_val Then
If Maxval(row2) > Maxval(max_row) Then
max_val = wval
max_row = row2
End If
ElseIf wval > max_val Then
max_val = wval
max_row = row2
End If
End If
Next
Cells(max_row, "C").Value = rank
rank = rank + 1
Next
MsgBox ("完了")
End Sub
Private Function Maxval(ByVal wrow As Long)
Maxval = Cells(wrow, "A").Value
If Cells(wrow + 1, "A").Value > Maxval Then
Maxval = Cells(wrow + 1, "A").Value
End If
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 複数列のある文字を優先して1列に表示したいです 2 2022/12/03 12:07
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Excel(エクセル) エクセルで、2つのセルに検索値を入れて結果を一覧表示させる 1 2023/07/10 10:26
- SEO SEOの検索順位について 例えばあるキーワードで検索順位が6位だとしたら、そのキーワードに関連する良 1 2022/06/30 21:51
- 統計学 テストの順位についてです 今回のテストの順位を知りたいのですが、できますでしょうか?今回は僕の学年は 4 2022/11/30 19:15
- PHP 【スプレッドシート】順位のつけ方 2 2022/08/17 13:27
- 弁護士・行政書士・司法書士・社会保険労務士 行政書士試験の民法についての質問になります。 時効についての質問になります。 問 Aが甲債権の担保と 1 2023/07/06 21:51
- 弁護士・行政書士・司法書士・社会保険労務士 ★行政書士試験の民法についての質問になります。 時効についての質問になります。 問 Aが甲債権の担保 1 2023/05/22 21:49
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
データグリッドビューの一番最...
-
Excelで、あるセルの値に応じて...
-
マクロ 最終列をコピーして最終...
-
DataGridViewに空白がある場合...
-
VBAで、特定の文字より後を削除...
-
rowsとcolsの意味
-
B列の最終行までA列をオート...
-
VBAを使って検索したセルをコピ...
-
VBAで、離れた複数の列に対して...
-
マクロ 関数を使った抽出でエラ...
-
IIF関数の使い方
-
VBAで重複データを確認したい
-
Changeイベントでの複数セルの...
-
VBAのFind関数で結合セルを検索...
-
エクセル アクティブセルから...
-
文字列の結合を空白行まで実行
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
vba 2つの条件が一致したら...
-
Cellsのかっこの中はどっちが行...
-
VBAを使って検索したセルをコピ...
-
VBAのFind関数で結合セルを検索...
-
文字列の結合を空白行まで実行
-
IIF関数の使い方
-
【VBA】2つのシートの値を比較...
-
マクロ 最終列をコピーして最終...
-
Changeイベントでの複数セルの...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルVBAにて =A1=B1とすれ...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
マクロについて。S列の途中から...
-
VBA UserFormからの転記で
-
targetをA列のセルに限定するに...
おすすめ情報