Как ограничить значение одной ячейки значением другой ячейки? - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть таблица, полная чисел.Мне нужен макрос-скрипт, который сравнивает целевое значение со значением оценки.Если значение оценки выше целевого значения, измените целевое значение на значение оценки.

Может ли кто-нибудь мне помочь?

(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 голосов
/ 16 апреля 2019

Я думаю, что это может помочь вам:

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
0 голосов
/ 16 апреля 2019

F2 и F3 имеют сценарий, где Target

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...