如何通过一个单元格的值限制一个单元格的值?

时间:2019-04-16 13:34:29

标签: excel vba compare

我的桌子上满是数字。我需要一个宏脚本,该脚本将目标值与得分值进行比较。如果得分值高于目标值,则将目标值更改为得分值。

有人可以帮我吗?

https://imgur.com/a/xmej0fi

我尝试将以下代码应用于一个单元格,但没有用。

Sub check_value()
  If Cells(8, 23).Value < Cells(8, 24).Value Then
    Cells(8, 23).Value = Cells(8, 24).Value
  End If
End Sub

2 个答案:

答案 0 :(得分:0)

F2和F3存在目标<得分的情况,因此我们可以比较值(类似于您获得的值)

if cells(2,6).value < cells(3,6) then cells(2,6).value = cells(3,6).value

我对测试代码的唯一更正是使用行而不是列进行比较,这似乎是每个技能的评估方式(例如,技能5的目标是5(F2),而得分是7(F3) ))。


请注意,可以通过查找最后一列(lc)和最后一行(lr)来使用循环来遍历整个数据集,例如:

For j = 2 to lc 'columns
    for i = 2 to lr step 2 'rows with a step of 2 so you can do sets of score/target
        'do stuff
    next i
next j

答案 1 :(得分:0)

我认为这可能对您有帮助

Option Explicit

Sub test()

    Dim LastRow As Long, Row As Long, Target As Long, Score As Long, LastColumn As Long, Column As Long

    With ThisWorkbook.Worksheets("Sheet1")

        LastColumn = .Cells(1, .Columns.Count).End(xlToLeft).Column
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row

        For Column = 2 To LastColumn

            For Row = 2 To LastRow Step 2

                Target = .Cells(Row, Column).Value
                Score = .Cells(Row + 1, Column).Value

                If Score > Target Then
                    .Cells(Row, Column).Value = Score
                End If

            Next Row

        Next Column

    End With

End Sub