Я хочу сравнить 3 различных значения столбцов (B, C, D), а затем получить более высокий результат в столбце F - PullRequest
0 голосов
/ 20 июня 2019

На самом деле я начал программировать на VBA, изучая Google и создавая несколько макросов для автоматизации моей работы.
Существует диапазон, в котором я хочу сравнивать значения, и любое значение выше в каждой строке-столбце, которое требуется получить для печати.Столбец F:

Dim cell As Range
Dim filrange As Range 
Dim lastRow As Long

lastRow = Range("A1").CurrentRegion.Rows.Count

Set filrange = Range("B2:B" & lastRow)

For Each cell In filrange.Cells.SpecialCells(xlCellTypeVisible)

  If cell.Value >= 10 And 
     (Cells(cell.Row, "C").Value) >= 10 And 
     (Cells(cell.Row, "D").Value) >= 10 Then

    cell.Offset(0, 3).Select

 End If
Next

Ответы [ 3 ]

1 голос
/ 20 июня 2019
cell.Offset(0, 3) = Application.WorksheetFunction.Max(Range(cell.Row, "B"),Cells(cell.Row, "D")))
1 голос
/ 20 июня 2019

Вы можете попробовать:

Option Explicit

Sub test()

    Dim i As Long, LastRow As Long

    With ThisWorkbook.Worksheets("Sheet1") 'Change sheet name if needed
        'Find the last row of columnA
        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        'Loop column F from 1 to LastRow
        For i = 1 To LastRow
            .Range("F" & i).Value = Application.Max(.Range("B" & i).Value, .Range("C" & i).Value, .Range("D" & i).Value)
        Next i

    End With

End Sub

Результаты:

enter image description here

1 голос
/ 20 июня 2019

Вы можете сделать это с помощью Do Loop.

lastRow = Range("B1").CurrentRegion.Rows.Count 'the last row in your data in column B as I thought you referenced B, C and D
x = 1 'the starting row

Do While x <= lastRow
cells(x, 6).formula = "=Max(B" & x & ":D" & x & ")"
y = cells(x, 6)
cells(x, 6) = y
x = x + 1
Loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...