Ошибка замены на 3 условия — Excel VBA

#excel #vba

Вопрос:

Чего я пытаюсь добиться, так это:

  • Если ячейки в столбце F содержат число, преобразуйте его в проценты
  • Если ячейки в столбце F пусты, а соответствующая ячейка в столбце G содержит 0, то запишите в ячейку в столбце F «-«
  • Если ячейки в столбце F не содержат числа, а соответствующая ячейка в столбце G содержит число, превышающее 0, то запишите в ячейку в столбце F «Требуемое действие»

Столбец G форматируется как число.

Однако с данным кодом все становится «-«. В чем же фокус?

 Sub Replace()
    Dim ws As Worksheet, dataLastRow As Long, cell As Range, MyRng As Range
    Set ws = ThisWorkbook.Worksheets("MyTab")
    
    Application.ScreenUpdating = False
    dataLastRow = ws.Range("F" amp; Rows.Count).End(xlUp).Row
    Set MyRng = ws.Range("F2:F" amp; dataLastRow)
    
    '   Loop through column F
    For Each cell In MyRng
    If cell = "" And cell.Offset(0, 1) = 0 Then
                cell = "-"
    ElseIf cell = "" And cell.Offset(0, 1) > 0 Then
                cell = "Action Required"
    ElseIf cell >= 0 Then
    With MyRng
    .NumberFormat = "0.00%"
     .Value = .Value
    End With
           Else
            End If
        Next cell
      Application.ScreenUpdating = True
End Sub
 

Комментарии:

1. Должна ли ваша процентная ветвь форматировать ячейку, а не myrng? Можете ли вы показать некоторые исходные данные ?

Ответ №1:

Ваш вопрос выглядит странно: вы получаете список данных, вам нужно обобщить эти данные, и вместо того, чтобы поместить резюме в другую колонку, вы решаете перезаписать свои данные своим резюме.

На случай, если вы передумаете, я написал эту формулу, которая создает резюме (не совсем правильно, необходимо внести некоторые небольшие изменения).:

 =IF(AND(ISBLANK(F1),G1=0),"-",IF(ISNUMBER(F1),F1,"Action required"))
 

(О, в случае, если вы используете формулу, не забудьте изменить формат ячейки в процентах.)