EXCELで集計やまとめをするマクロを作っています。
不良項目と不良数を1位2位3位、とランキング形式でまとめたいです。
不良数の方はLARGE関数を使用して1~3位を簡単に取得できますが、
不良数を取得した先頭行にある不良項目が取得方法がわかりませんでした。
前の質問で頂いた参考を基に書いてみて期待に一番近しくなりましたが、数値が同じだった場合、項目名も同じになってしまいました。
数値が同じだった場合は、左側を優先にした順位にしたいです。
やり方がありましたら教えて頂けると幸いです。
やりたいこと
H1~M6に入っている項目名と数値を取得し、A2~F6にまとめる
1行ごとに1番~3番目に大きかった数値と、1番~3番目大きかった数値の項目名を取得し、
左側に代入する
プログラム
VBA
1Sub Huryo_Rank() 2Dim i As Integer 3Dim first As Integer 4Dim second As Integer 5Dim third As Integer 6Dim k_row_first As Integer 7Dim k_name_first As String 8Dim k_row_second As Integer 9Dim k_name_second As String 10Dim k_row_third As Integer 11Dim k_name_third As String 12 13For i = 2 To Cells(Rows.Count, "H").End(xlUp).Row 14 first = WorksheetFunction.Large(Range(Cells(i, 8), Cells(i, 13)), 1) 15 Cells(i, 2).Value = first 16 second = WorksheetFunction.Large(Range(Cells(i, 8), Cells(i, 13)), 2) 17 Cells(i, 4).Value = second 18 third = WorksheetFunction.Large(Range(Cells(i, 8), Cells(i, 13)), 3) 19 Cells(i, 6).Value = third 20 21 22 k_row_first = WorksheetFunction.Match(first, Range(Cells(i, 8), Cells(i, 13)), 0) + 7 23 k_name_first = Cells(1, k_row_first).Value 24 Cells(i, 1).Value = k_name_first 25 26 k_row_second = WorksheetFunction.Match(second, Range(Cells(i, 8), Cells(i, 13)), 0) + 7 27 k_name_second = Cells(1, k_row_second).Value 28 Cells(i, 3).Value = k_name_second 29 30 k_row_third = WorksheetFunction.Match(third, Range(Cells(i, 8), Cells(i, 13)), 0) + 7 31 k_name_third = Cells(1, k_row_third).Value 32 Cells(i, 5).Value = k_name_third 33 34 Next i 35 36End Sub 37
環境
Windows 10
EXCEL 2019
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。