|
▼トキノハジメ さん:こんにちは〜
>
>kanabunさんに教えて頂きたいのですが
>A1 B1 C1 をD3 D4 D5になった場合は如何すればよいのか教えてください。
以下のように元の表が[D3]から始まっているなら、
D E F G
3 6 5 4 ×
4 3 4 2 〇
5 6 7 8 ◎
6 6 5 6 △
7 8 8 3 △
Sub Try1() のFor〜Nextループ文を
> With Range("D3", Cells(Rows.Count, "F").End(xlUp))
> End With
で括ってやり、内部の Cells(i, j) を .Cells(i, j) のように
Cellsのまえにドットをつけてやれば、その他の変更は無用です。
Sub Try2()
Dim maxVal As Long, maxCol As Long
Dim i As Long, j As Long
With Range("D3", Cells(Rows.Count, "F").End(xlUp))
For i = 1 To .Rows.Count
maxVal = .Cells(i, 1) '初めは1列目の値を
maxCol = 1 '最大値とし
For j = 2 To 3 '2,3列目の値をこれと比較
If maxVal < .Cells(i, j) Then 'これまでの最大値より
maxVal = .Cells(i, j) '大きかったら、この値を最大値に
maxCol = j 'かつ、最大値の列番号を更新
ElseIf maxVal = .Cells(i, j).Value Then '値が最大値と同じとき
maxCol = maxCol + j - (j < 3) '列番号を3以上にする
End If
Next
.Cells(i, 4).Value = Choose(maxCol, _
"×", "〇", "◎", "△", "△") 'maxColの値により記号を返す
Next
End With
End Sub
けれど、
>A1 B1 C1 をD3 D4 D5になった場合は如何すれば
これは列方向が行方向に変わるのですから、別の修正が必要です。
ほんとに表がそのように変わったのですか?
一応確認しときます。
|
|