|
▼初心者M さん:
> DやGに入る「2」や「4」の数字は、かけるのでなく割るのに使います。ここの処理までは、個人的には諦めていました。
>
>
> C D E F G H
>8
>
>9 15 2000 15 1800
>
>10
>
>11
>
>12 17 5900 17 2 11800
>
>
とりあえず、3列のうち、中央の列のことは無視して、C列、F列に何か記号が
入っていれば、その記号別に第3列(E列、H列...)の数値の最大値を振り当てる
というコードです。
つまり、Sub test3() を3か所修正しただけのコードです。
Sub test4()
Dim n As Long
Dim y As Long, x As Long
Dim ss As String
Dim c As Range
Const Y0 = 8, YY = 25, Ystp = 16 '縦方向 最初の行番、繰り返し回数,Step
Const X0 = 3, XX = 27, Xstp = 3 '列方向 最初の列番、繰り返し回数,Step
Dim dic As Object
Set dic = CreateObject("Scripting.Dictionary")
For x = X0 To X0 + (XX - 1) * Xstp Step Xstp
For y = Y0 To Y0 + (YY - 1) * Ystp Step Ystp
For Each c In Cells(y, x).Resize(9)
ss = c.Value
If Len(ss) > 0 Then
n = c.Offset(, 2).Value
If Not dic.Exists(ss) Then
dic(ss) = n
ElseIf dic(ss) < n Then
dic(ss) = n
End If
End If
Next
Next
Next
For x = X0 To X0 + (XX - 1) * Xstp Step Xstp
For y = Y0 To Y0 + (YY - 1) * Ystp Step Ystp
For Each c In Cells(y, x).Resize(9)
ss = c.Value
If Len(ss) > 0 Then
c.Offset(, 2).Value = dic(ss)
End If
Next
Next
Next
End Sub
|
|